python - 使用特定文件夹路径中的指定库运行 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 未安装在全局站点包中。
解决方案
您需要使用 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
包现在是标准库的一部分。
推荐阅读
- javascript - 使用按钮清除单个表单字段/小部件数据
- javascript - 如何比较 2 个文本输入值?
- ruby - Ruby:将不同的数组值添加到相同键的哈希中
- vue.js - Vue FullCalendar 中的下个月和上个月观察者
- mysql - SQL。检查条件并在列中标记
- javascript - 你如何将 React useState hook 解构为命名空间?
- python - BS4 找不到文字
- swift - 在 Combine 中,调度器的延迟和去抖动应该是什么?(仅限 Xcode 11 beta 1)
- c# - ActionLink 不向控制器函数传递参数
- wordpress - Mailchimp 上的错误验证 Wordpress Feed RSS