在 virtualenv 中找不到 Python 模块

Posted

技术标签:

【中文标题】在 virtualenv 中找不到 Python 模块【英文标题】:Python module not found in virtualenv 【发布时间】:2015-11-07 09:48:14 【问题描述】:

我尝试安装 python 模块:

virtualenv .
source bin/activate
pip install utmp

好像安装好了:

(wtmp)chris@chris-nb:~/computer/wtmp$ find -iname utmp
./bin/utmp
./lib/python2.7/site-packages/utmp

但是 Python 说没有找到:

(wtmp)chris@chris-nb:~/computer/wtmp$ ./wtmp.py
Traceback (most recent call last):
  File "./wtmp.py", line 3, in <module>
    import utmp
ImportError: No module named utmp

这是模块问题吗?我做错什么了吗?

如果重要的话,操作系统是 Ubuntu。

这是重新安装日志:

(wtmp)chris@chris-nb:~/computer/wtmp$ pip install --upgrade --no-deps --force-reinstall utmp
Downloading/unpacking utmp
  Downloading utmp-0.4.tar.gz
  Running setup.py (path:/home/chris/computer/wtmp/build/utmp/setup.py) egg_info for package utmp
    zip_safe flag not set; analyzing archive contents...
    flake8.reporter: module references __file__
    flake8.tests._test_warnings: module references __file__
    flake8.tests.test_integration: module references __file__

    Installed /home/chris/computer/wtmp/build/utmp/flake8-2.4.1-py2.7.egg
    Searching for six
    Reading https://pypi.python.org/simple/six/
    Best match: six 1.9.0
    Downloading https://pypi.python.org/packages/source/s/six/six-1.9.0.tar.gz#md5=476881ef4012262dfc8adc645ee786c4
    Processing six-1.9.0.tar.gz
    Writing /tmp/easy_install-oJJB7w/six-1.9.0/setup.cfg
    Running six-1.9.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-oJJB7w/six-1.9.0/egg-dist-tmp-1116oK
    no previously-included directories found matching 'documentation/_build'
    zip_safe flag not set; analyzing archive contents...
    six: module references __path__

    Installed /home/chris/computer/wtmp/build/utmp/six-1.9.0-py2.7.egg
    Searching for mccabe>=0.2.1,<0.4
    Reading https://pypi.python.org/simple/mccabe/
    Best match: mccabe 0.3.1
    Downloading https://pypi.python.org/packages/source/m/mccabe/mccabe-0.3.1.tar.gz#md5=9a1570c470ff5db678cc0c03d5c0c237
    Processing mccabe-0.3.1.tar.gz
    Writing /tmp/easy_install-uFdTms/mccabe-0.3.1/setup.cfg
    Running mccabe-0.3.1/setup.py -q bdist_egg --dist-dir /tmp/easy_install-uFdTms/mccabe-0.3.1/egg-dist-tmp-Q139di

    Installed /home/chris/computer/wtmp/build/utmp/mccabe-0.3.1-py2.7.egg
    Searching for pep8>=1.5.7,!=1.6.0,!=1.6.1,!=1.6.2
    Reading https://pypi.python.org/simple/pep8/
    Best match: pep8 1.5.7
    Downloading https://pypi.python.org/packages/source/p/pep8/pep8-1.5.7.tar.gz#md5=f6adbdd69365ecca20513c709f9b7c93
    Processing pep8-1.5.7.tar.gz
    Writing /tmp/easy_install-BdNCrK/pep8-1.5.7/setup.cfg
    Running pep8-1.5.7/setup.py -q bdist_egg --dist-dir /tmp/easy_install-BdNCrK/pep8-1.5.7/egg-dist-tmp-rrUWb1
    warning: no previously-included files matching '*.pyc' found under directory 'docs'
    warning: no previously-included files matching '*.pyo' found under directory 'docs'
    warning: no previously-included files matching '*.pyc' found under directory 'testsuite'
    warning: no previously-included files matching '*.pyo' found under directory 'testsuite'
    no previously-included directories found matching 'docs/_build'

    Installed /home/chris/computer/wtmp/build/utmp/pep8-1.5.7-py2.7.egg
    Searching for pyflakes>=0.8.1,<0.9
    Reading https://pypi.python.org/simple/pyflakes/
    Best match: pyflakes 0.8.1
    Downloading https://pypi.python.org/packages/source/p/pyflakes/pyflakes-0.8.1.tar.gz#md5=905fe91ad14b912807e8fdc2ac2e2c23
    Processing pyflakes-0.8.1.tar.gz
    Writing /tmp/easy_install-R5ltqy/pyflakes-0.8.1/setup.cfg
    Running pyflakes-0.8.1/setup.py -q bdist_egg --dist-dir     /tmp/easy_install-R5ltqy/pyflakes-0.8.1/egg-dist-tmp-a8CCFW
    zip_safe flag not set; analyzing archive contents...
    pyflakes.checker: module references __file__
    pyflakes.checker: module references __path__
    pyflakes.test.test_api: module references __file__
    pyflakes.test.test_undefined_names: module references __file__
    pyflakes.test.test_undefined_names: module references __path__

    Installed /home/chris/computer/wtmp/build/utmp/pyflakes-0.8.1-py2.7.egg

    warning: no files found matching '*.rst' under directory 'docs'
    warning: no files found matching '*.py' under directory 'docs'
Installing collected packages: utmp
  Found existing installation: utmp 0.4
    Uninstalling utmp:
      Successfully uninstalled utmp
  Running setup.py install for utmp

    warning: no files found matching '*.rst' under directory 'docs'
    warning: no files found matching '*.py' under directory 'docs'
    Installing utmp script to /home/chris/computer/wtmp/bin
Successfully installed utmp
Cleaning up...

【问题讨论】:

【参考方案1】:

您可以通过调用pip listpip show utmp 来检查它是否安装在您的virualenv 中。

如果没有,请尝试重新安装:

pip install --upgrade --no-deps --force-reinstall utmp

并使用错误日志扩展您的问题。

还要验证 shebang line,因为它可能不指向您的 virtualenv。

【讨论】:

好像安装了:(wtmp)chris@chris-nb:~/computer/wtmp$ pip list argparse (1.2.1) enum (0.4.4) pip (1.5.4) setuptools (2.2) utmp (0.4) wsgiref (0.1.2) 您是否尝试过重新安装它:pip install --upgrade --no-deps --force-reinstall utmp? 我已经在上面添加了重新安装日志。 你可以尝试启动 python 解释器并输入import utmp。如果可行,则问题出在wtmp.py 脚本中。检查shebang line,因为它可能不指向您的venv。 谢谢!我用错了Shebang线!自从我上次使用python和virtualenv以来已经有一段时间了。【参考方案2】:

刚刚遇到同样的问题。我通过使用which python 发现了问题所在。它告诉我,我实际上有一个别名,它指向与当前virtualenv 中的不同的python 可执行文件。显然别名比通过source 设置的路径更重要。

【讨论】:

是的,别名优先。为什么这与问题有关? 它是相关的,因为这可能是为什么在 virtualenv 中找不到 Python 模块的可能原因之一。如果有人早点在这里发布它,我会更快地解决我的问题,因此我想我会在这里添加我的解决方案作为提示。

以上是关于在 virtualenv 中找不到 Python 模块的主要内容,如果未能解决你的问题,请参考以下文章

VirtualEnv 系统找不到指定的路径:'...Python3.6\\DLL'

virtualenv 编译找不到 python27.lib

为啥 `virtualenv` 找不到 `pkg_resources`?

在终端中找不到 python

Python 在同一文件夹中找不到模块

(Python)ValueError:在路径中找不到程序点