2017-12-22 9 views
1

私はインポート可能なpythonパッケージを開発しようとしており、shellから呼び出すentry_pointもあります。Pythonパッケージを開発するときにpython entry_pointを読み込めません

私が取得エントリポイントを呼び出ししようとしている:私はこのエラーを取得する前に、setup.pyに0.1.dev0から0.1.dev1にバージョンをインクリメントし、python setup.py sdistを実行し、その後pip install -e .

されなかったものを基本的に pkg_resources.VersionConflict: (pysec-aws 0.1.dev1 (/Users/myuser/PycharmProjects/pysec-aws), Requirement.parse('pysec-aws==0.1.dev0'))

私は何が間違っていますか?積極的に開発し、setuptoolsでバンドルしているパッケージの開発版をインストールする適切な方法は何ですか?

+0

'pysec-aws'パッケージ自体や他のパッケージからコードを起動するとこのエラーが出ますか?また、 'setup.py'スケルトンと共に完全なエラートレースがうまくいくでしょう。 – hoefling

+1

私の推測では、 'pysec-aws'のエントリポイントを宣言し、正確なバージョン' 0.1.dev0'の 'pysec-aws'への依存を宣言する他のパッケージがあると思います。今度は 'pysec-aws'を' 0.1.dev1'にバンプして、他のパッケージにはもう有効な依存関係がなくなり、 'pkg_resources'がエントリーポイントを読み込むときにチェックされます。 – hoefling

答えて

0

です。この問題を修正したのは、新しいvirtualenvを作成することだけでした。彼らはおそらく、私は新しいバージョンをインストールしたときに削除/アップグレードされなかった - 何らかの理由で古いバージョンへ(.py)参照

どうやら私のvirtualenv/binは(.pyc)をコンパイルしていたし、非コンパイル。

新しいvirtualenvを作成し、必要なパッケージを再インストールすると、この問題を解決できました。

+1

ああ、あなたが問題を解決したと聞いてうれしく思います。あなたの場合は、ソースとコンパイルされたソースの両方に言及しました。それが価値があることについては、残った '.pyc'だけが(venv関連ではない)問題を引き起こしたケースが一度ありました。詳細を忘れてしまったのですが、問題が見つかったと思います。 – user650881

1

アプリケーションのバージョンがsetup.pyで宣言されたバージョンと一致しないというエラーが表示されます。アプリケーションに__version__が設定されているかどうかを確認してください。

この問題を回避するには、バージョンの単一のソースを使用することを検討することがあります。 https://packaging.python.org/guides/single-sourcing-package-version/に記載されているさまざまなオプションがいくつかあります。外部依存関係がない場合の簡単な方法は、

import myapp 
setup(
    ... 
    version=myapp.__version__ 
    ... 
) 
+0

マニフェストファイルがありません。パッケージの依存関係があります。 '__version__'はどこに定義する必要がありますか? –

+0

私の '__init __。py'ファイルに' __version __ = '0.1dev1''を追加し、あなたが提供したリンクの最初のテクニックを使用しました。 パッケージはビルドされ、以前と同じように正常にインストールされますが、シェルからentry_pointを呼び出そうとすると、同じエラーが発生します。 –

+0

マニフェストの@EytanAvisrorはsetup.py宣言版です。私は を修正します。エラーについては、あなたのプロジェクトのどこかで0.1.dev0への参照がまだありますか? (あなたがあなたのコメントの参照バージョンで期間を失ったように見えることに注意してください) – user650881

関連する問題