PYTHONPATH权限
我已经将一些模块从windows pc上的标准PYTHONPATH权限,python,Python,我已经将一些模块从windows pc上的标准站点包位置复制到EC2 ubuntu实例用户的主目录中:/home/theuser/data/projects/mypack mypack包含 1) 一个空的\uuuu init\uuuu.py和 2) 一个子目录mymodules,其中有我的python模块文件,还有一个子目录\uuuu init\uuuuuu.py,它从文件导入文件语句运行 我已确保为用户编辑.bashrc和.profile,以更新PYTHONPATH。我确保启动一个新的会话,以
站点包位置复制到EC2 ubuntu实例用户的主目录中:/home/theuser/data/projects/mypack
mypack
包含
1) 一个空的\uuuu init\uuuu.py
和
2) 一个子目录mymodules
,其中有我的python模块文件,还有一个子目录\uuuu init\uuuuuu.py
,它从文件导入文件
语句运行
我已确保为用户
编辑.bashrc
和.profile
,以更新PYTHONPATH
。我确保启动一个新的会话,以用户的身份登录
如果我在/home/theuser/data/projects
中,导入mypack
运行良好。在任何其他地方,比如说在用户的主目录中,我都可以看到
>>> import mypack
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named mypack
谢谢
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
看起来您需要在PYTHONPATH中包含“/home/theuser/data/projects”,而不是“/home/theuser/data/projects/mypack”。看起来您需要在PYTHONPATH中包含“/home/theuser/data/projects”,而不是“/home/theuser/data/projects/mypack”.PYTHONPATH应包含/home/theuser/data/projects
,而不是/home/theuser/data/projects/mypack
当您要求Python导入mypack
时,它会使用其搜索路径查找mypack.py
或包含\uuuu init\uuuuuu.py
的目录mypack
当您在../projects
中时,此功能有效,因为mypack/\uuuuu init\uuuuuu.py
在那里可用(并且sys.path
中的'
条目搜索当前工作目录),但当您不在那里时,它找不到带有您提供的PYTHONPATH
的mypack/\uuuu init\uuuuuuuu.py
。PYTHONPATH
应该包含/home/theuser/data/projects
,而不是/home/theuser/data/projects/mypack
当您要求Python导入mypack
时,它会使用其搜索路径查找mypack.py
或包含\uuuu init\uuuuuu.py
的目录mypack
当您在
../projects
中时,此功能有效,因为mypack/\uuuuu init\uuuuuu.py
在那里可用(并且sys.path
中的'
条目搜索当前工作目录),但当您不在那里时,它找不到你提供的PYTHONPATH
的mypack/\uuuuu init\uuuuuuuuuy.py
。你能在/home/theuser/data/projects中发布ls-lah
的输出吗?我总是重新编译并将这些包放在(或符号链接)用户站点目录中(由python-m site--user site
显示)。默认情况下,它位于sys.path中,这样就不用麻烦你处理PYTHONPATH、.profile和.bashrc了……你能把ls-lah
inside/home/theuser/data/projects的输出发布到/home/theuser/data/projects中吗?我总是建议把(或符号链接)这样的包放到用户站点目录中(如python-msite--user site
所示)。默认情况下,它位于sys.path中,这样您就不用再处理PYTHONPATH、.profile和.bashrc了……当他在…/projects中时,它就起作用了,因为PYTHONPATH包含“”,这将导致在查找模块时包含当前目录。如果从PYTHONPATH中删除了它,那么他也无法从该目录加载mypack。@r这是一个很好的观点(我在回答中添加了这一点),虽然不是严格正确的-“
是sys.path
的一部分,而不是PYTHONPATH
环境变量。观察PYTHONPATH=foopython-c'import sys的输出;例如,打印sys.path“。当他在…/projects中时,它起作用,因为PYTHONPATH包含“”,这将导致在查找模块时包含当前目录。如果从PYTHONPATH中删除了它,那么他也无法从该目录加载mypack。@r这是一个很好的观点(我在回答中添加了这一点),虽然不是严格正确的-“
是sys.path
的一部分,而不是PYTHONPATH
环境变量。观察PYTHONPATH=foopython-c'import sys的输出;例如,打印系统路径“。
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