web-dev-qa-db-ja.com

「<packageName>」で「__main__」モジュールが見つかりませんpython package

私は最初のPythonパッケージを野生でリリースしようとしていますが、PyPiでのセットアップに成功し、pip install。コマンドラインを介してパッケージを実行しようとすると($ python etlTest)、次のエラーが表示されます。

/usr/bin/python: can't find '__main__' module in 'etlTest'

IDEから直接コードを実行すると、問題なく機能します。私はPython 2.7を使用しており、__init__.pyスクリプトが必要な場合。これを機能させるには何をする必要がありますか?

14
OpenDataAlex

実際にパッケージを使用しなくても、問題を簡単に再現できます。

$ python empty
.env/bin/python: can't open file 'empty': [Errno 2] No such file or directory
$ mkdir empty
$ python empty
.env/bin/python: can't find '__main__' module in 'empty'
$ python Empty
.env/bin/python: can't find '__main__' module in 'Empty'

したがって、ライブラリをまったく呼び出していないので、Pythonインタープリターに存在しないスクリプト名を与えているだけです。実行しようとするディレクトリ。

私はPyPiからあなたのパッケージをうまくインストールすることができ、それを大丈夫にインポートすることができましたが、そこにはエントリポイントがないようです、何もありません便利なものはトップレベルでエクスポートされ、実行可能なスクリプトはPython bin:

>>> import etltest
>>> dir(etltest)
['__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__',
'__path__', '__version__']

ドキュメントのクイックスタート で提案されているように、etlTest.pyを直接実行しても動作しません:

$ python .env/lib/python2.7/site-packages/etltest/etlTest.py
2014-07-13 17:19:56,831 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - DEBUG - Attempting to load .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - No such file or directory .env/lib/python2.7/site-packages/.etltest-settings.yml
2014-07-13 17:19:56,832 - settings - WARNING - Could not find settings file in .env/lib/python2.7/site-packages/.etltest-settings.yml,.env/lib/python2.7/site-packages/.etltest-settings.yml. Using defaults where present.
Traceback (most recent call last):
  File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 73, in <module>
    main(sys.argv[1:])
  File ".env/lib/python2.7/site-packages/etltest/etlTest.py", line 22, in main
    SettingsManager().first_run_test()
  File ".env/lib/python2.7/site-packages/etltest/utilities/settings_manager.py", line 29, in __init__
    self.app_name = etltest_config['app_name']
KeyError: 'app_name'

あなたのパッケージはまだ配布に適していないと思います。開発環境への依存関係をクリーンアップし、 setuptoolsエントリポイント を読んで、パッケージとともに適切なコマンドライン実行可能ファイルを提供することができます。また、何らかのテストリリースでない場合は、デフォルトでデバッグモードで実行しないでください。

9
famousgarkin

私は最近同じ問題を抱え、最終的に自分で解決策を見つけました。エラーが言ったように、私は___main__.py_と同じパスにファイル___init__.py_を追加しました。

___main__.py_の中に、次のコードを追加しました。

_ from mypackage.mymodule import main 
      main() 
_

main()は私のコードの主要な機能でした。そして、今では機能しています。

ここに私のディレクトリ:

_package 
|__dirpackage
   |_mypackage.py
   |_ __init__.py
   |_ __main__.py
|_setup.py`
_
8
Lbrth_BoC