Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PYTHONPATH权限_Python - Fatal编程技术网

PYTHONPATH权限

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。我确保启动一个新的会话,以

我已经将一些模块从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
。我确保启动一个新的会话,以用户的身份登录

如果我在
/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