0

我已将一些模块从site-packages我的 windows pc 上的标准位置复制到 EC2 ubuntu 实例的用户主目录中:/home/theuser/data/projects/mypack.

mypack包含

1) 一空__init__.py的和

2)一个子目录mymodules,其中我有我的python模块文件以及一个__init__.py运行from thefile import thefile语句的文件。

我确保同时编辑.bashrc.profilefortheuser以更新PYTHONPATH. 我确保开始一个新的会话,以theuser.

import mypack如果我在/home/theuser/data/projects. 在其他任何地方,比如在theuser的主目录中,我得到

>>> import mypack
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
 ImportError: No module named mypack

我对unix权限不是很熟悉,上面的设置在我的电脑上测试OK。一些unix权限细节让我失望了吗?

PYTHONPATH确实似乎正确注册了更改:

>>> import sys
>>> print sys.path
['', 
'/usr/local/lib/python2.7/dist-packages/distribute-0.6.48-py2.7.egg', 
'/home/theuser', 
'/home/theuser/data/projects/mypack', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-linux2', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages']

谢谢。

theuser@ip-12-345-67-8:~/data/projects$ ls -lah
total 20K
drwxrwxr-x 5 theuser theuser 4.0K Jul  2 18:50 .
drwxr-xr-x 5 theuser theuser 4.0K Jul  2 16:48 ..
drwxrwxr-x 2 theuser theuser 4.0K Jul  2 17:18 database
drwxrwxr-x 2 theuser theuser 4.0K Jul  2 18:28 analysis
drwxrwxr-x 5 theuser theuser 4.0K Jul  2 19:18 mypack
4

2 回答 2

2

PYTHONPATH应该包含/home/theuser/data/projects,不是/home/theuser/data/projects/mypack

当您要求 Python 时import mypack,它会使用其搜索路径查找其中一个或包含mypack.py的目录。mypack__init__.py

这在您在里面时有效.../projects,因为mypack/__init__.py在那里可用(并且搜索当前工作目录''中的条目sys.path),但是当您不在时,它无法找到您提供mypack/__init__.py的内容。PYTHONPATH

于 2013-07-02T19:52:30.677 回答
1

看起来您需要在 PYTHONPATH 中包含“/home/theuser/data/projects”,而不是“/home/theuser/data/projects/mypack”。

于 2013-07-02T19:51:51.867 回答