2012-01-23 14 views
0

Pycharm 1.5.3のような魔法があるようです。PyCharmからpythonスクリプトを実行します。 Pycharmでのインポート

私は、次いるファイル構造:

/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これはwですコンソールでritten:

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 

インポート機能は、このモジュール「ツール」を知っている私はなぜ理解していません。 Windowsのcmdからこのスクリプトを実行すると、すべて正常です。私は 'ImportError:モジュール名なしツール'を取得します

答えて

1

あなたのpythonパスにツールモジュールがあるD:\\Workspace\\Python\\spが含まれているため、あなたが提供した例のインポートが機能します。

標準のPythonインタプリタからモジュールを実行すると、現在のモジュールへのパスがsys.pathにのみ追加されます。

+0

'tool.py'パスからsys.pathにすべてのディレクトリを追加するPyCharm関数ですか?マジックのように見えます。 – sunprophit

+0

私は知らない、私はそのツールを使用しません。あなたはそれが__init__.pyを追加した後、Windowsのcmdで動作すると言いました。 pycharmの下にあるsys.pathはまだ同じですか? –

+0

はい、__init__.pyを追加した後も同じです。 __init__.pyを追加する前と同じです。 – sunprophit

0

/spディレクトリに__init__.pyがありません。その名前のファイルを作成すると、インポートすることができます。

+0

はい、動作します。しかし、なぜpythonモジュールの親ディレクトリをチェックしますか?私はdocの中で、組み込みのモジュールだけを検索し、次にsys.pathのディレクトリで検索するのを見ました。 – sunprophit

+0

[このドキュメント](http://docs.python.org/tutorial/modules.html)は、なぜ*なぜ* *現時点で説明しているのか、私は若干良い仕事をすることができます。 – Makoto

関連する問題