运行 python 具有来自特定文件夹路径的指定库的脚本

Run python script with specified libraries from a specific folder path

我在没有使用 virtualenv 库的情况下创建了一个 "virtual" 环境。

我有这个结构。

./default_env
├── .venv
├── main.py

在 .venv 文件夹中,我安装了库。

要在 .venv 中安装软件包,我只需 运行

>>> pip install --target=path\to\.venv package_to_install

没关系,工作正常。

但是我的问题是当我尝试 运行 python 时。
我不想 运行 python 使用全局站点包,我希望它指向我的 .venv 文件夹。我读过 USER_SITE,但我无法正确理解如何更改和使用它。

当我 运行 python main.py 时,出现错误(因为我清除了所有已安装的库)。但是,我在 .venv 中安装了请求及其依赖包。

所以我正在尝试了解如何 运行

>>> python main.py 

(带参数,或更改某些内容...)但要告诉 python "site-packages" 将指向 .venv 文件夹。

这是我的 main.py 脚本。

import requests
def main():
    try:
        import requests
        r = requests.get('https://api.github.com/user')
        print("get request sent")
    except:
        print("get request not sent")

if __name__ == "__main__":
    main()

所以当我 运行 它时,我明白了

λ python main.py
Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

因为 requests 没有安装在全局站点包中。

您需要设置python路径,使用PYTHONPATH环境变量或修改sys.path.

# This needs to come before any other imports
import sys
sys.path.insert(0, "path/to/your/venv")

您也可以删除其他路径以只包含您自己的路径。 sys.path 只是一个 list.

但是为什么不直接使用 virtualenv 呢? venv 包现在是标准库的一部分。