Python 如何指定库的路径以从另一个脚本运行脚本?

Python 如何指定库的路径以从另一个脚本运行脚本?,python,subprocess,popen,Python,Subprocess,Popen,我需要检查一个参数的更改,如果它已更改-我需要重新启动脚本 代码: 我发现错误: 虽然unix和windows之间可能存在细微的差异,但直截了当的答案是:可以使用PYTHONPATH环境变量让python知道在哪里查找库。 但是,如果使用,我建议首先激活它,或者调用相关的二进制文件,而不是设置环境变量 考虑这个场景:您在/tmp/so\u demo/venv处有一个venv,您尝试运行这个文件: $ cat /tmp/so_demo/myscript.py import requests pri

我需要检查一个参数的更改,如果它已更改-我需要重新启动脚本

代码:

我发现错误:


虽然unix和windows之间可能存在细微的差异,但直截了当的答案是:可以使用
PYTHONPATH
环境变量让python知道在哪里查找库。
但是,如果使用,我建议首先激活它,或者调用相关的二进制文件,而不是设置环境变量

考虑这个场景:您在
/tmp/so\u demo/venv
处有一个venv,您尝试运行这个文件:

$ cat /tmp/so_demo/myscript.py
import requests
print("great success!")
运行系统python解释器将找不到请求模块,并将产生以下错误:

$ python3 /tmp/so_demo/myscript.py
Traceback (most recent call last):
  File "/tmp/so_demo/myscript.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
但是在venv中使用二进制文件更好,因为您不需要熟悉内部venv目录路径,而且更便于移植(请注意,我前面提供的路径描述了次要版本):

请参阅不这样做的原因。
$ python3 /tmp/so_demo/myscript.py
Traceback (most recent call last):
  File "/tmp/so_demo/myscript.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'
$ PYTHONPATH='/tmp/so_demo/venv/lib/python3.8/site-packages/' python3 /tmp/so_demo/myscript.py
great success!
$ /tmp/so_demo/venv/bin/python /tmp/so_demo/myscript.py
great success!