首页 > 解决方案 > 使用特定文件夹路径中的指定库运行 python 脚本

问题描述

我在不使用 virtualenv 库的情况下创建了一个“虚拟”环境。

我有这个结构。

./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“站点包”将指向 .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 未安装在全局站点包中。

标签: pythonvirtualenv

解决方案


您需要使用 PYTHONPATH 环境变量或通过修改来设置 python 路径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包现在是标准库的一部分。


推荐阅读