虚拟环境"没有名为"错误

时间:2016-08-12 03:02:17

标签: python python-3.x virtualenv

我有一个运行Python 3.5的虚拟环境。我运行了我的源命令并运行了pip来安装beatbox:

(venv) Daniels-Air:bin danieldow$ pip list
beatbox (32.1)
pip (8.1.2)
requests (2.11.0)
setuptools (25.1.6)
six (1.10.0)
slack (0.0.2)
slackclient (1.0.1)
websocket-client (0.37.0)
wheel (0.29.0)

然而,当我尝试导入时,我得到:

    (venv) Daniels-Air:bin danieldow$ python3
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import beatbox
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/danieldow/venv-python3/venv/lib/python3.5/site-packages/beatbox/__init__.py", line 1, in <module>
    from _beatbox import _tPartnerNS, _tSObjectNS, _tSoapNS, SoapFaultError, SessionTimeoutError
ImportError: No module named '_beatbox'

在网站包中的beatbox目录中,-beatbox模块位于:

(venv) Daniels-Air:site-packages danieldow$ pwd
/Users/danieldow/venv-python3/venv/lib/python3.5/site-packages
(venv) Daniels-Air:site-packages danieldow$ cd beatbox
(venv) Daniels-Air:beatbox danieldow$ ls
__init__.py     _beatbox.py     python_client.py
__pycache__     marshall.py     xmltramp.py

有人能说出我做错了什么或我能尝试什么吗?

谢谢!

* PS在Pycharm中,在解释器下,它确实将包显示为已安装。

2 个答案:

答案 0 :(得分:1)

问题是beatbox是为Python 2.x编写的。 &#39; pip instal beatbox3&#39;它起作用了。

答案 1 :(得分:1)

你解决了这个问题。但我会告诉你更多的事情。

在Python中,请运行以下代码:

import sys
print(sys.path)

这将打印环境变量。如果您发现这些环境变量是您的系统Python而不是您的venv Python,那么原因必然是以下两个原因之一:

  1. 您在.zshrc中写了别名,并将python指向系统的python路径。如果是这样,只需删除别名。
  2. 你的python在venv中的软链接被破坏了。它无法找到python二进制文件的正确位置。如果是,请重建软链接或重新创建一个venv并使用参数:--copy virutalenv venv --copy