Python 如何获取pyd文件的路径,即相当于_文件的路径__
我有一个文件Python 如何获取pyd文件的路径,即相当于_文件的路径__,python,cython,cythonize,Python,Cython,Cythonize,我有一个文件package.py,我正试图将其打包到package.pyd。我在package.py CURR = os.path.dirname(os.path.realpath(__file__)) 当我运行package.py时,它工作正常,但当我将package.pyd导入另一个文件wrapper.py时,我会收到以下错误消息 Traceback (most recent call last): File "C:\Projects\Wrapper.py", line 1,
package.py
,我正试图将其打包到package.pyd
。我在package.py
CURR = os.path.dirname(os.path.realpath(__file__))
当我运行package.py
时,它工作正常,但当我将package.pyd
导入另一个文件wrapper.py
时,我会收到以下错误消息
Traceback (most recent call last):
File "C:\Projects\Wrapper.py", line 1, in <module>
import package
File "package.py", line 40, in init package (package.c:4411)
NameError: name '__file__' is not defined
回溯(最近一次呼叫最后一次):
文件“C:\Projects\Wrapper.py”,第1行,在
进口包装
文件“package.py”,第40行,在init包(package.c:4411)中
名称错误:未定义名称“\uuuuu文件\uuuuu”
如何获取.pyd文件的位置。还有一种方法可以检查它是作为.pyd还是.py运行的
谢谢大家! 似乎是这样。
但在加载模块后,您可以获得\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
:
def get_file():
return __file__
您可以检查\uuuu file\uuuu
变量以了解加载的文件。
还要记住python的搜索顺序:pyd(so)、py、pyw(对于windows)、pyc
更多关于它的信息在这里
找到了两种工作方法
import
从同一级别导入一些文件,并使用其文件属性:
import os
from . import __file__ as _initpy_file
CURR = os.path.dirname(os.path.realpath(_initpy_file))
实际上,它不必是\uuuu init\uuuu.py
模块,您可以添加和导入任何[empty]文件以使其工作
当在支持多阶段模块初始化(Python>=3.5)的Python版本上运行时,
\uuu文件
现在可以在Cython(0.27 ish)的最新版本中工作。请参阅以了解添加该文件的位置。这对我不起作用,可能是因为我正在调用get\u file()
,而该调用又会尝试查找\u file\uuuu
。实际上,我一直在寻找解决办法。一个环境变量:)在中尝试除外。但是,当我尝试将.py转换为.pyd二进制文件时,我遇到了新的障碍。看起来,在制作.py包时,有太多的事情被认为是理所当然的,而在将其转换为.pyd时,这些事情并不适用
import os
from . import __file__ as _initpy_file
CURR = os.path.dirname(os.path.realpath(_initpy_file))