上記のソリューションは、python インタラクティブ シェルと実行可能な python ファイル内で動作が異なります。インポート ステートメントが環境変数 PYTHONPATH を認識していないように見える exe.py 設定で動作させる方法を理解するのに助けが必要です。
Python シェルでは、このソリューションにより、PYTHONPATH を変更する環境モジュールをロードできます。その後、その修正された PYTHONPATH から python モジュールをインポートできます。これは優れた機能であり、実行可能な python スクリプトで実行したいこととまったく同じです。
Python スクリプト (先頭は #!/usr/bin/env python など) では、PYTHONPATH の修正まで問題なく動作します。
if 'PYTHONPATH' in os.environ: print 'PYPATH:', os.environ['PYTHONPATH']
# nothing prints
execfile('/usr/local/Modules/default/init/python.py')
module('list')
# No Modulefiles Currently Loaded.
module('load', 'my_module')
print 'loaded my_module'
# loaded my_module
module('list')
# 1) /my_module
if 'PYTHONPATH' in os.environ: print 'PYPATH:', os.environ['PYTHONPATH']
# /home/me/py/my_module
しかし、それは python.exe で動作する限りです
Python シェルで正常に動作する my_module からインポートしようとすると、トレースバック レポート 'ImportError: No Module named module_1' が発生します。
このことから、python exeでこれを実行すると、pythonは修正されたPYTHONPATHを使用していない、または「見ていない」と結論付けることができると思います(ただし、インタラクティブなpythonシェルでは表示されます)。
それは私が立ち往生するところです!何か案は?大変助かります。私が見落としていた本当に簡単な解決策があるに違いありません。それについて聞いて喜んでいます。
ありがとう & 良い一日を
マット
編集:さらに読むと、python自体がPYTHONPATHのコンテンツをsys.pathに追加することが示唆されていますが、これはインタラクティブなpythonシェルでもpython.exeを実行しても発生しません。
sys.path.insert(1,os.environ['PYTHONPATH']) を使用してexeで手動でこれを行うと、必要な機能が得られます