Python绝对路径与_文件_,用于名为“不同方式”的模块
在我的应用程序中,我有一个setuppython脚本(/root/ha/setup.py),它查看名为modules的目录,并在每个子目录中运行setup.py 相关代码如下:Python绝对路径与_文件_,用于名为“不同方式”的模块,python,Python,在我的应用程序中,我有一个setuppython脚本(/root/ha/setup.py),它查看名为modules的目录,并在每个子目录中运行setup.py 相关代码如下: """ Exec the module's own setup file """ if os.path.isfile(os.path.join(root, module, "setup.py")): execfile(os.path.join(root, module, "setup.py")) 问题是我希望/
""" Exec the module's own setup file """
if os.path.isfile(os.path.join(root, module, "setup.py")):
execfile(os.path.join(root, module, "setup.py"))
问题是我希望/root/ha/modules/modulename/setup.py无论从何处调用都能工作
如果我在modules/modulename中并运行python setup.py,这很好,但是如果我从modules/I上面的目录运行它,我会得到这个错误
idFile = open(os.path.dirname(os.path.abspath(__file__)) + "/id.txt", "r").read()
IOError: [Errno 2] No such file or directory: '/root/ha/id.txt'
正如您所看到的,它获取的是调用它的脚本的路径,而不是正在运行的脚本。它应该尝试读取/root/ha/modules/modulename/id.txt
我尝试使用不同的方法来获取路径,但都会出现此错误…
execfile
不会修改全局变量(如\uuuuuuu file\uuuu
),因此执行的脚本确实会采用错误的路径
您可以将全局变量传递给execfile
,以便修改其\uuuuuuuuuuuuuuuuuuuuuuu
变量:
script = os.path.join(root, module, "setup.py")
if os.path.isfile(script):
g = globals().copy()
g['__file__'] = script
execfile(script, g)
如果您需要从一些包中访问文件,则考虑使用<代码> PKGyReals文档如下:
获取作为名为
package
的包的一部分存储的文件内容的示例如下谢谢。这太完美了:)@J.F.塞巴斯蒂安A“请”在这句话中不会出错。没必要rude@J.F.Sebastian问题似乎是关于任何random setup.py的,所以他无法控制获取文件所使用的任何方法path@J.F.Sebastian我想说的是,问题是关于“如何欺骗一个使用execfile的\uu文件
”脚本”。