2017-05-10 6 views
0

eggファイルとして配布される2つのPythonアプリケーションを作成します。私たちはPython 2.5.4の下で数年間それを作ってきましたが、現在2.7.13までの両方を持っています。このプロセスでは、2つのアプリケーションのうちの1つが、2.7.13にインストールした後、奇妙な動作を示しています。eggをインストールするためにeasy_installを使用した後、モジュールをインポートするときにImportErrorが発生する

私がeasy_install.exeを実行すると、どのように見えるのかがわかるすべての方法でうまくいくように見えます。しかし、Pythonのコマンドラインでモジュールをインポートしようとすると、私はImportErrorを取得します。

この問題について多くの奇妙なものがあります:

  • これは、Windows上でのみ起こる - の両方のアプリケーションをインストールし、これが唯一の私たちの2つのプログラムの1で発生Linuxの
  • を正常に動作 - 他の1は
  • どこでも正常に動作easy_installをはは私がパスに表示されないのWindows
  • にインストール卵問題の中には全く文句はありません「輸入SYS /印刷のsys.path」
  • がsite_packages
  • におけるPTHパッケージのリストに表示されないん私は、全体では、Windows管理者としてインストールしてテストやっているので、私はそこにはないと思いますおそらく許可の問題かもしれません
  • 2.5から2.7へ行くとき、いずれのプログラムのソースまたはsetup.pyにも変更はありません
  • インストールについては何も気になりません - 仮想envなし、グローバルインストール〜へサイトパッケージ

ここにあります

from setuptools import setup 

setup(name='bar', 
     description='Bar Tool', 
     packages=['bar', 'bar.hexes', 'bar.barlib'], 
     entry_points = { 
     'console_scripts': [ 
      'bar = bar.main:main', 
      ], 
     }, 
    ) 

from setuptools import setup 

setup(name='foo', 
     description='Foo Module', 
     packages=['foo'], 
     entry_points = { 
     'console_scripts': [ 
      'foo = foo.foo:main', 
      ], 
     }, 
    ) 

そして、ここでは作業卵のsetup.pyです:失敗卵(モジュール名と無実を保護するためのfooに変更)のsetup.py

モジュールをインポートしようとするまで問題がないので、どうすればこの問題をデバッグできますか?

現時点で懸念されているのは、setup.pyのconsole_scriptsセクションのfoo.fooリファレンスです。 this problemの@joestの答えとやや似ています。

+0

卵をグローバルにインストールしようとしていますか?「管理者」として実行されない限り、UACでシステムグローバルディレクトリに書き込む権利がないのでしょうか? – yeputons

+0

はい、前述のように、インストールはグローバルsite_packagesに対して行われ、インストールとテストの両方でAdministratorでした。また、それが許可のものだった場合、それは他の卵がうまく動作している理由を説明しません。 –

+1

質問がなぜ投票不能になるのですか?質問を改善できる場合は、どうすればいいか教えてください。 –

答えて

0

卵に__init__.pyが存在しないため、fooモジュールをインポートできませんでした。私がまだ完全に理解していない理由で、x64ビルドマシンはそのファイルを自動的に生成します(Creating missing __init__.py for fooメッセージが表示されます)。x86ビルドマシンはそのステップをスキップし、壊れた卵を生成します。私たちがPython自体とこの卵を構築するプロセスの一部として必要なすべてのモジュールを構築していることを考えれば、動作がどのように異なるかはわかりませんが、そうではありません。

fooソースディレクトリにブランク__init__.pyを作成しました。これで、eggは常にビルドとインポートが正しく行われます。

関連する問題