在我的python程序过程中,我生成了以下字符串
“ D:\ something_else.py”
可以说D中还有其他资源:something_else.py需要。
我该如何从我的代码中运行something_else.py,可以说它是从C:\ Users \ Someone \ Desktop运行的?
现在我正在使用以下内容:
from subprocess import call
call(["python",pythloc])
这给我一个错误,因为它只能找到something_else.py,而无法找到something_else.py需要的其他资源,它们与something_else.py位于同一文件夹中
答案 0 :(得分:2)
除了需要小心使用“ \”而不是:
locationDir="D:\something_else.py"
在字符串前加上r:
locationDir=r"D:\something_else.py"
您只需设置PYTHONPATH环境变量即可指向其他模块所在的目录。
有关其他信息,请参见此处:
https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH
答案 1 :(得分:2)
如果您可以将提到的文件夹作为项目本身的一部分,则可以将其变成python包,只需在名为__init__.py
的文件夹中添加一个空文件即可。
如果它位于其他路径中,例如“ D:\ some_directory \”,并且具有something_else.py
和其他依赖项,请与导入语句一起执行此操作:
sys.path.append(r"D:\some_directory\")
from something_else import some_useful_function, some_useful_class
它将把提到的目录添加到您的sys.path
中,然后您可以从保存在其中的python文件中导入任何内容,然后像往常一样调用函数。
如果您使用的是任何PyCharm之类的IDE,作为导入检查的一部分,它仍可能在第二行显示unresolved errors
。但是代码在您运行时将可以正常工作。
当您只需导入和调用函数并具有更好的控制和错误检查功能时,从其他(python something.py
)调用python脚本几乎从来不是一个好主意。