我有一個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 lambda
我會嘗試使用'importlib.import_module'函數。但這不起作用,您需要複製importlib(將其命名爲'myimportlib'),並更改'_bootstrap._find_and_load_unlocked'的路徑分割算法。聽起來很酷的項目,但我不想維護代碼!我粘貼源代碼的網址,請注意這是Python提示,需要運行python 3.6。 https://github.com/python/cpython/tree/master/Lib/importlib – user983716
是的絕對不是我要去的:D –
但顯然它是唯一的解決方案,如果你無法避免的問題。就我個人而言,我相信這會很酷,可能對其他人有用。讓我知道如果你去實施,我想看看如何測試這樣的功能。 – user983716