我在不使用virtualenv library的情况下创建了"virtual"环境。
我有这个结构。
./default_env
├── .venv
├── main.py
在文件夹.venv中,我安装了库
要在.venv中安装软件包,我只需运行即可
>>> pip install --target=path\to\.venv package_to_install
这没关系,工作正常。
但是我的问题是当我尝试运行python时。
我不想运行使用全局site-packages的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'
因为请求未安装在全局site-packages中。
分析解答
您需要使用PYTHONPATH环境变量或修改sys.path
来设置python路径。
# This needs to come before any other imports
import sys
sys.path.insert(0, "path/to/your/venv")
您还可以删除其他路径以包含您自己的路径。 sys.path
只是一个list
。
但是为什么不使用virtualenv呢? venv
package现在是标准library的一部分。