我正在創建一個自包含的python工具,位於一個目錄中,我希望我的一些同事能夠使用包含numpy和matplotlib的標準python發行版運行。我不希望他們必須安裝額外的庫。python軟件包 - 覆蓋內置軟件包和可怕的「模塊xxxx已經導入」警告
─myprogram
| __main__.py
| [...other .py files...]
├───datafiles
├───sandbox
└───xlrd
├───doc
└───examples
我現在用的是xlrd
庫,其中包括我在我的節目分發,這樣他們就不必安裝。
我測試了我的程序,以確保它可以與Enthought EPD,PortablePython和PythonXY一起使用。
下面是問題:PythonXY可以與xlrd庫一起安裝。當我去與PythonXY運行我的程序,我得到了這樣的警告:
c:\app\python\pythonxy-2.7.5.0\lib\site-packages\scikits\__init__.py:1:
UserWarning: Module xlrd was already imported from myprogram\xlrd\__init__.pyc,
but c:\app\python\pythonxy-2.7.5.0\lib\site-packages is being added to sys.path
__import__('pkg_resources').declare_namespace(__name__)
我如何調整我的源代碼,以便它僅導入嵌入式xlrd庫,我公司提供,而不是安裝一個,如果一個安裝?
澄清:
-
從印刷警告
- 除此之外,沒有任何副作用,可以發生?我想要使用xlrd的嵌入版本,而不是python中安裝的全局副本。
- 如果沒有什麼不對,我怎麼能僅僅爲這個庫禁止這個警告?
您是否嘗試過將模塊路徑插入到'sys.path'的更高優先級條目中,而不是PythonXY的xlrd版本的位置? – jedwards
剛試過打印出sys.path。本地目錄是列表中的第一個。 –
你用'from myprogram.xlrd import ...'導入包嗎? (或'from .xlrd import ...') – michaelmeyer