繁体   English   中英

Python虚拟环境不默认python包

[英]Python virtual environment does not default python packages

我必须创建虚拟环境并将其移动到某个远程服务器。 为此,我创建了环境,但它不包含默认的 python 包,如 json 和 logging。

导入某个包时出现错误:Traceback(最近一次调用最后一次):File "", line 1, in ModuleNotFoundError: No module named 'json'

正如你所看到的 json 来自默认路径而不是来自虚拟环境

source venv3/bin/activate
(venv3) [user1@nn1 ~]$ python
Python 3.7.4 (default, Dec 12 2019, 12:03:10)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> print(json.__file__)
/usr/local/lib/python3.7/json/__init__.py
>>> import influxdb
>>> print(influxdb.__file__)
/home/user1/venv3/lib/python3.7/site-packages/influxdb/__init__.py

Virtualenvs 不能在服务器之间移动。 您是否将 virtualenv 移至新服务器? 如果是这样,我认为对您来说最简单的方法是在远程服务器上重新创建它。

虚拟环境使用绝对路径(例如从环境变量中检索); 您可以在文档PEP 405 中找到更多信息。 因此,即使您将 venv 移动到另一个目录,它也很可能不再起作用。 Venv 不应该四处移动。 相反,您必须在复制项目的任何地方重新创建 venv。

如果您使用诸如诗歌pipenv 之类的库,或者只是一个 requirements.txt 文件,则可以大大简化重新创建您的venv

Virtualenv 确实有默认包。 如果它没有,那么你会在导入语句本身上得到错误。 不在进一步的命令上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM