在PyCharm中运行Python脚本和导入

0 投票
2 回答
4401 浏览
提问于 2025-04-17 10:54

看起来Pycharm 1.5.3有些神奇的地方,或者我可能漏掉了什么。

我的文件结构是这样的:

/sp
/sp/tools.py
/sp/test/main.py

文件里包含以下代码

main.py:

__author__ = 'username'
import tools
import sys

def test1():
    print locals()
    print globals()
    print sys.path
    print test1

if __name__ == '__main__':
    test1()

tools.py:

class SettingsDictionary(dict):
    def __init__(self, seq, **kwargs):
        dict.__init__(self, seq, **kwargs)

当我运行main.py时,控制台上显示了:

C:\Python27\python.exe D:/Workspace/Python/sp/test/main.py
{}
{'test1': <function test1 at 0x0143D0B0>, '__warningregistry__': {("Not importing directory 'C:\\Program Files\\JetBrains\\PyCharm 1.5.3\\helpers\\tools': missing __init__.py", <type 'exceptions.ImportWarning'>, 2): True}, '__builtins__': <module '__builtin__' (built-in)>, '__file__': 'D:/Workspace/Python/sp/test/main.py', '__author__': 'p.grechishkin', 'sys': <module 'sys' (built-in)>, '__name__': '__main__', '__package__': None, 'tools': <module 'tools' from 'D:\Workspace\Python\sp\tools.pyc'>, '__doc__': None}
['D:\\Workspace\\Python\\sp\\test', 'C:\\Python27\\lib\\site-packages\\simplejson-2.1.6-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\django_staticfiles-1.1.2-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\django_appconf-0.4-py2.7.egg', 'C:\\Python27\\lib\\site-packages\\suds-0.4-py2.7.egg', 'C:\\Program Files\\JetBrains\\PyCharm 1.5.3\\helpers', 'D:\\Workspace\\Python\\sp', 'C:\\Windows\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'C:\\Python27\\lib\\site-packages\\win32', 'C:\\Python27\\lib\\site-packages\\win32\\lib', 'C:\\Python27\\lib\\site-packages\\Pythonwin']
<function test1 at 0x0143D0B0>

Process finished with exit code 0

我不明白为什么导入函数会知道这个模块'tools'。当我从Windows命令行运行这个脚本时,一切正常,但我得到了'ImportError: No module named tools'的错误。

2 个回答

0

你在 /sp 这个文件夹里缺少一个叫 __init__.py 的文件。你只需要创建一个这个名字的文件,就可以正常导入了。

1

你提供的例子中的导入工作正常,因为你的 Python 路径里包含了 D:\\Workspace\\Python\\sp,这个路径就是你的工具模块所在的地方。

当你从标准的 Python 解释器运行一个模块时,它只会把当前模块的路径添加到 sys.path 中。

撰写回答