Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行python脚本,就像它位于其他地方一样_Python_Import_Module_Path - Fatal编程技术网

运行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一样执行。如果需要

是否可以从一个位置运行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
一样执行。如果需要,我可以在
/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。