Python虚拟环境没有默认的python软件包

时间:2019-12-12 10:11:02

标签: python virtualenv

我必须创建虚拟环境并将其移动到某个远程服务器。 为此,我创建了一个环境,但其中不包含默认的python包(如json和日志记录)。

导入某些软件包时出现错误: 追溯(最近一次通话):   文件“”,第1行,位于 ModuleNotFoundError:没有名为“ 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

3 个答案:

答案 0 :(得分:2)

Virtualenv在服务器之间不可移动。您是否将virtualenv移至新服务器?如果是这样,我认为最方便的是在远程服务器上重新创建它。

答案 1 :(得分:1)

虚拟环境使用绝对路径(例如,从环境变量中获取);您可以在the documentationPEP 405中找到更多信息。因此,即使将venv移到另一个目录,它也很可能不再起作用。 Venvs不应四处走动。相反,无论您在何处复制项目,都必须重新创建venv。

如果您使用poetrypipenv之类的库,或者仅使用一个requirements.txt文件,则可以大大简化重新创建venv的过程。

答案 2 :(得分:0)

Virtualenv确实具有默认软件包。如果没有,那么您将在import语句本身上得到错误。不在其他命令上。