私は次のようなPythonパッケージを持っている:それは、サードパーティのライブラリからあるのでインポート - Pythonの
package/
├── __init__.py
├── PyMySQL-0.7.6-py2.7.egg
├── pymysql
├── PyMySQL-0.7.x.pth
└── tests.py
フォルダ構造を変更することはできません。 .pthファイルの
内容は
import sys; sys.__plen = len(sys.path)
./PyMySQL-0.7.6-py2.7.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
いただきましtests.pyにpymysqlを含めるための最良の方法
ているフォルダ名が含まれているので、私は明らかにfrom PyMySQL-0.7.6-py2.7.egg
を使用することはできませんドット。
P.S.このコードはAWSラムダに展開されるため、絶対パスは不明です
私は 'importlib.import_module'関数を使用しようとします。しかし、これはうまくいかず、importlib( 'myimportlib'のような名前)パッケージをコピーし、' _bootstrap._find_and_load_unlocked'のパス分割アルゴリズムを変更する必要があります。クールなプロジェクトに聞こえるが、コードを維持したくない!私はソースコードのURLを貼り付けます。これはPythonのヒントにあり、Python 3.6が必要です。 https://github.com/python/cpython/tree/master/Lib/importlib – user983716
確かに私が行っていることではありません:D –
問題を回避できない場合は、明らかにそれが唯一の解決策です。個人的に私はそれが素晴らしいと思うし、おそらく他の人に役立つでしょう。あなたが実装についていれば私に知らせてください。そのような機能をテストする方法を知りたいのですが。 – user983716