2016-09-29 6 views
0

ではないと言うのpythonで、それがパッケージであると言いますインストールされ、dir構造の先頭を指します。ピップはそれが私はWindowsを使用して、このようなディレクトリを持っています


troopcfg.py

class TroopCfg(object): 
... 

troopcalc.py

from troopcalc.troopcfg import TroopCfg 

setup.py

from setuptools import setup 

setup(name='troopcalc', 
    version='0.1', 
    description='Calculates troop distribution', 
    url='...', 
    author='Randell ...', 
    author_email='...', 
    packages=['troopcalc', 'troopcalc.tests', 'troopcalc.data'], 
    package_dir={'troopcalc': 'troopcalc', 'troopcalc.tests': 'troopcalc/tests', 'troopcalc.data': 'troopcalc/data'}, 
    package_data={'troopcalc.data': ['*.json']}, 
    ) 

私はpython .\troopcalc.pyを実行した場合、私は、次を得る:

Traceback (most recent call last): 
    File ".\troopcalc.py", line 2, in <module> 
    from troopcalc.troopcfg import TroopCfg 
    File "...\python\troopcalc\troopcalc\troopcalc.py", line 2, in <module> 
    from troopcalc.troopcfg import TroopCfg 
ImportError: No module named 'troopcalc.troopcfg'; 'troopcalc' is not a package 

ピップは、それがパッケージであると言いますが、Pythonはそうではないと言います。目標はもちろん絶対パスを使用することではありません。私は何が欠けていますか?

ありがとうございました。

+0

すべてのPythonファイルにインポート行を投稿できますか?また、理解が難しいため、ディレクトリ構造の書式を修正することもできます。 – Steve

+0

ええ、申し訳ありませんが、私は壊れたディレクトリ構造に気付かなかった。 __init __。pyはすべて空白です。 – Randell

+0

それを壊すように慎重に、私はあなたのためにそれを修正しました – gia

答えて

1

私はpython .\troopcalc.pyを実行した場合、私は、次を得る:

まあ、はい。 Pythonはtroopcalctroopcalc.pyであると考えています。それはsys.pathのディレクトリにあるからです。

python -m troopcalc.troopcalc 
+0

'。\ troopcalc.py'を実行するには、彼はすでにtroopcalcディレクトリの中にいなければならないので、これは動作しません。 –

+0

わかりません。ええ、troopcalc.pyはありますが、 'import troopcalc.troopcfg'を使うと、モジュールではなくパッケージを探すべきでしょうか? – Randell

+0

'sys.path'のディレクトリだけを調べます。 'troopcalc.py'を実行している場合、' troopcalc'パッケージは 'sys.path'のどのディレクトリにも見つかりません。 –

関連する問題