来自xx.xx import *的Python导入错误:没有命名的模块

时间:2017-01-28 17:22:02

标签: python python-2.7

这是我的文件结构:

-test

--m1

---t.py

--m2

---__init__.py

---utils.py

t.py:

from m2.utils import *
print foo()

utils.py:

def foo():
  return 5

__ init__.py为空

它适用于我的本地环境(macOS Sierra python 2.7.10):

Shangtong@Shangtong:~/GitHub/PaperReplication/test$ python m1/t.py
5
Shangtong@Shangtong:~/GitHub/PaperReplication/test$ echo $PYTHONPATH
:/Users/Shangtong/DevelopmentKits/libsvm-3.20/python

然而,它在我的服务器(Python 2.7.8)中不起作用:

[shangton@jasper test]$ python m1/t.py
Traceback (most recent call last):
  File "m1/t.py", line 1, in <module>
    from m2.utils import *
ImportError: No module named m2.utils
[shangton@jasper test]$ ls -al
total 16
drwxrwxr-x 4 shangton shangton 4096 Jan 28 09:10 .
drwx------ 4 shangton shangton 4096 Jan 28 10:09 ..
drwxrwxr-x 2 shangton shangton 4096 Jan 28 09:12 m1
drwxrwxr-x 2 shangton shangton 4096 Jan 28 10:09 m2
[shangton@jasper test]$ echo $PYTHONPATH
/global/software/python/Python-2.7.8/lib/python2.7/site-packages/:/global/software/python/Python-2.7.3/lib/python2.7/site-packages/:~/PaperReplication/:~/test/m2:~/test

1 个答案:

答案 0 :(得分:1)

您正在证明您的PYTHONPATH包含:

SELECT
name,
leavetype,
SUM(Stock-Consumed) as Remaining 
from leaverecord
where (leavetype LIKE 'Casual' OR leavetype LIKE 'Earned' or leavetype LIKE 'Sick')
GROUP BY 1, 2

但是,$ sed -r 's/"([^"]+)".*"([^"]+)"/{"\1": ["\2"]}/; s/ ?, ?/","/g' file {{"name": ["john","jane","gordon","matthew"]}} 实际上不是有效的PATH组件!它提示到你的shell 用你的主目录替换那个字符(当没有引用时,在一个单词的第一个位置,以及其他满足其他条件的地方) - 但是Python不是你的shell,如果你的shell在设置环境变量时没有兑现这个提示(也许是因为,在一个字符串的中间,它没有处于领先位置),它赢了&#39;除非Python明确地调用~/test/m2:~/test

,否则将被尊重

设置环境变量时,请使用~

os.path.expanduser()