Python-package在virtualenv中不工作

Python-package在virtualenv中不工作,python,virtualenv,packages,Python,Virtualenv,Packages,我正在尝试创建一个包,并遵循教程。当使用安装在Mac上的本机Python时,代码可以正常工作,但当我激活virtualenv时,它就不工作了。你能告诉我为什么以及如何才能做到这一点吗?谢谢 # python -V Python 2.7.10 # source env/bin/activate (env) # python -V Python 3.6.0 (env) # python test.py Traceback (most recent call last): File "test.p

我正在尝试创建一个包,并遵循教程。当使用安装在Mac上的本机Python时,代码可以正常工作,但当我激活virtualenv时,它就不工作了。你能告诉我为什么以及如何才能做到这一点吗?谢谢

# python -V
Python 2.7.10
# source env/bin/activate
(env) # python -V
Python 3.6.0
(env) # python test.py
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    from Animals import Mammals
  File "/private/tmp/test/Animals/__init__.py", line 1, in <module>
    from Mammals import Mammals
ModuleNotFoundError: No module named 'Mammals'
(env) # deactivate
# python -V
Python 2.7.10
# python test.py
Printing members of the Mammals class
    Tiger
    Elephant
    Wild Cat
Printing members of the Birds class
    Sparrow
    Robin
    Duck
# ls -lrtah
total 8
-rw-r--r--  1 btm   wheel   324B Feb 12 02:29 test.py
drwxr-xr-x  5 btm   wheel   170B Feb 12 02:32 .
drwxr-xr-x  7 btm   wheel   238B Feb 12 02:32 env
drwxr-xr-x  9 btm   wheel   306B Feb 12 02:38 Animals
drwxrwxrwt  9 root  wheel   306B Feb 12 02:44 ..
# tree Animals
Animals
├── Birds.py
├── Birds.pyc
├── Mammals.py
├── Mammals.pyc
├── __init__.py
├── __init__.pyc
└── __pycache__
    └── __init__.cpython-36.pyc

# cat Animals/__init__.py
from Mammals import Mammals
from Birds import Birds
# virtualenv --version
15.0.3
#python-V
Python 2.7.10
#源环境/箱/激活
(环境)#python-V
Python 3.6.0
(env)#python test.py
回溯(最近一次呼叫最后一次):
文件“test.py”,第3行,在
从动物进口哺乳动物
文件“/private/tmp/test/Animals/_init__.py”,第1行,在
从哺乳动物进口哺乳动物
ModuleNotFoundError:没有名为“哺乳动物”的模块
(环境)#停用
#python-V
Python 2.7.10
#python test.py
打印类成员
老虎
大象
野猫
印刷鸟类类的成员
麻雀
罗宾
鸭子
#ls-lrtah
总数8
-rw-r--r--1 btm车轮324B二月12日02:29测试日期
drwxr-xr-x 5 btm车轮170B二月12日02时32分。
drwxr-xr-x 7 btm车轮238B二月12日02:32环境
drwxr-xr-x 9 btm车轮306B二月12日02:38动物
DRWXRWT 9根轮306B二月12日02:44。。
#树动物
动物
├── 小鸟
├── 小鸟
├── 哺乳动物
├── 哺乳动物
├── __初始值
├── __初始值
└── __pycache__
└── __初始化cpython-36.pyc
#猫科动物
从哺乳动物进口哺乳动物
从鸟进口鸟
#虚拟版本
15.0.3

使用
from.哺乳动物在动物中导入哺乳动物
!真管用!我可以只添加“.”用于测试目的,比如在virtualenv中,但是如果我要构建我的应用程序,我可以只使用现有代码而不添加“.”,对吗?不确定,我认为没有任何理由删除“.”,也许只是将它们保留在其中?Python导入取决于程序运行时的当前工作目录。所有导入路径都需要考虑工作目录或使用相对导入路径。“.”告诉python使用相对导入路径,并开始在与当前正在运行的文件相同的目录中搜索模块。Ok。因此,在这种情况下,工作目录就是test.py所在的目录。因此,在该上下文中执行的所有导入语句都将开始在与test.py相同的目录中查找模块。-即使实际的导入发生在不同的目录中(在Animals/_init__u;.py中发生的情况),基本上python也会检查名为哺乳类.py的文件,但找不到它,因为它找不到正确的位置。