【问题标题】:Modules installed in venv are not recognizedvenv 中安装的模块无法识别
【发布时间】:2018-11-07 19:05:26
【问题描述】:

为什么它不起作用? Django.tar.gz 直接来自 PyPi 如果我尝试“python -m pip install”它可以工作,但会全局安装 python。

(newenv) [root]# pip install paczki/Django-2.0.7.tar.gz
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Processing ./paczki/Django-2.0.7.tar.gz
Requirement already satisfied: pytz in ./newenv/lib/python3.6/site-packages (from Django==2.0.7)
Installing collected packages: Django
  Running setup.py install for Django ... done
Successfully installed Django-2.0.7
(newenv) [root]# python3
Python 3.6.0 (default, May 22 2018, 12:59:04)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'django'
>>>

【问题讨论】:

  • 你确定 python3 这里指的是 virtualenv 使用的相同 Python 版本吗?您可能没有创建一个名为 python3 的别名,对吧?
  • 我想是的。运行“python”然后“import django”给出相同的结果。它不应该引用 venv 中的 pyton 吗?
  • 好的,你正在引导我找到一个好的解决方案。实际用python3.6运行pip,然后运行python3.6效果不错。怎么了?我继承了这个虚拟机来在这里移植我的 django 应用程序,所以我不知道最后一个所有者对这里的 python 安装做了什么。
  • (在 venv 目录中)which pythonwhich python3which python3.6 可能会提供有用的结果
  • 好吧,其实python3和pythonlead做newenv/bin/python3,python3.6导致全局usr/local/bin。因此,django 仅在使用全局 python (python3.6) 安装时才能工作,而在使用 venv python 时无法工作。

标签: python pip python-venv


【解决方案1】:

想通了。有人早些时候设置了一个系统范围的别名,它将 python 别名为特定路径,如“/A/B/python”,因此即使在 venv 中使用 python 也是这个。 :which python: 可能具有误导性 - id 不检查别名,因此 :which python: 和 :python: 没有指向同一个。

【讨论】:

    猜你喜欢
    • 2021-04-29
    • 2015-09-22
    • 2018-09-23
    • 2021-11-19
    • 2017-05-16
    • 2016-11-05
    • 2020-12-28
    相关资源
    最近更新 更多