运行python脚本,就像它位于其他地方一样
是否可以从一个位置运行python脚本,但让脚本像在其他位置一样执行(因此导入等都可以按预期工作) 我的设想是:运行python脚本,就像它位于其他地方一样,python,import,module,path,Python,Import,Module,Path,是否可以从一个位置运行python脚本,但让脚本像在其他位置一样执行(因此导入等都可以按预期工作) 我的设想是: 应用程序位于/opt/foo/bin下,应用程序的主要入口点是foo.py 在/opt/foo下,有一组包/模块foo.py然后导入 我们以cd/opt/foo/bin&&python-foo.py运行应用程序 我希望能够将foo.py复制到/tmp并使用cd/tmp&&python foo.py运行它。我希望它能像生活在/opt/foo/bin下的foo.py一样执行。如果需要
- 应用程序位于/opt/foo/bin下,应用程序的主要入口点是
foo.py
- 在
下,有一组包/模块/opt/foo
然后导入foo.py
- 我们以
cd/opt/foo/bin&&python-foo.py运行应用程序
foo.py
复制到/tmp
并使用cd/tmp&&python foo.py
运行它。我希望它能像生活在/opt/foo/bin
下的foo.py
一样执行。如果需要,我可以在/tmp
下修改foo.py
希望这对某些人来说是有意义的。在/opt/foo/bin
下修改foo.py
不是一个选项。一种可能是在/tmp
下创建一个文件夹,即/tmp/foo
并将除foo.py
之外的所有内容进行符号化-但我希望有一种更简单的方法来完成我想要的 这是我的建议。解决问题的一个方法是将目录/opt/foo/bin添加到PYTHONPATH中。您还可以修改foo.py中的路径以查找模块,例如
import sys
sys.path.append('/opt/foo/bin')
import foo
此解决方案适用于简单的情况,但不适用于我们的应用程序,因为我们的应用程序根据脚本的位置自行处理sys.path。