pkgutilpython
『壹』 win7 升級pip本身 失敗 是怎麼回事
首先介紹一下,win7 升級pip本身失敗這個問題是來源於win7系統安裝python包工具pip時失敗,而下文介紹的則是基於python安裝pip的正確步驟,所以並非答非所問。這以步驟適用於xp、win7、win8以及win10系統。而python包工具pip安裝失敗與使用哪個系統並沒有任何關系。
centos5.x默認安裝的python為2.4版本,但是部分軟體需要2.5以上的python.
所以我們需要升級Python,比如到2.7版本,步驟
curl -O http://python.org/ftp/python/2.7/Python-2.7.tgz
tar xfz Python-2.7.tgz
cd Python-2.7
./configure
make && make install
把/usr/bin/python更換為python2.7的軟鏈接
ln -s /usr/local/bin/python2.7.3 /usr/bin/python
用python -V確認一下版本。
但問題是把python升級後,原先安裝的pip運行可能會遇到錯誤,如下:
[plain]viewplain
[root@dev1bin]#pip
Traceback(mostrecentcalllast):
File"/usr/bin/pip",line7,in?
sys.exit(
File"/usr/lib/python2.4/site-packages/pkg_resources.py",line236,inload_entry_point
returnget_distribution(dist).load_entry_point(group,name)
File"/usr/lib/python2.4/site-packages/pkg_resources.py",line2097,inload_entry_point
returnep.load()
File"/usr/lib/python2.4/site-packages/pkg_resources.py",line1830,inload
entry=__import__(self.mole_name,globals(),globals(),['__name__'])
File"/usr/lib/python2.4/site-packages/pip-1.2.1-py2.4.egg/pip/__init__.py",line9,in?
frompip.basecommandimportcommand_dict,load_command,load_all_commands,command_names
File"/usr/lib/python2.4/site-packages/pip-1.2.1-py2.4.egg/pip/basecommand.py",line4,in?
frompkgutilimportwalk_packages
ImportError:cannotimportnamewalk_packages
所以pip也需要升級到配套的版本:
curl -O http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg
sh setuptools-0.6c11-py2.7.egg
easy_install pip
現在再查看/usr/local/bin目錄下面的pip:
[root@dev1 bin]# ll /usr/local/bin |grep pip
-rwxr-xr-x 1 root root 250 Oct 18 17:23 pip
-rwxr-xr-x 1 root root 258 Oct 18 17:23 pip-2.7
用pip-2.7即可。
『貳』 Python怎樣得到資源文件的絕對路徑
importsys
importos.path
package="foo"
resource="bar.ini"
#pkgutil.get_data(package,resource)
os.path.abspath(os.path.join(os.path.dirname(sys.moles[package].__file__),resource))
如果你說的是包的資源文件,可以用上面的方法獲取資源文件的絕對路徑。
『叄』 程序開發中初始化怎麼解釋
初始化就是程序運行前將某些特定的數據恢復至默認值,達到一個最原始狀態。
根據 __main__ 被初始化的方式,__main__.__spec__ 會被設置相應值或是 None。
當 Python 附加 -m 選項啟動時,__spec__ 會被設為相應模塊或包的模塊規格說明。 __spec__ 也會在 __main__ 模塊作為執行某個目錄,zip 文件或其它 sys.path 條目的一部分載入時被填充。
在 其餘的情況 下 __main__.__spec__ 會被設為 None,因為用於填充 __main__ 的代碼不直接與可導入的模塊相對應:
交互型提示
-c 選項
從 stdin 運行
直接從源碼或位元組碼文件運行
請注意在最後一種情況中 __main__.__spec__ 總是為 None,即使 文件從技術上說可以作為一個模塊被導入。 如果想要讓 __main__ 中的元數據生效,請使用 -m 開關。
還要注意即使是在 __main__ 對應於一個可導入模塊且 __main__.__spec__ 被相應地設定時,它們仍會被視為 不同的 模塊。 這是由於以下事實:使用 if __name__ == "__main__": 檢測來保護的代碼塊僅會在模塊被用來填充 __main__ 命名空間時而非普通的導入時被執行。
5.9. 開放問題項
XXX 最好是能增加一個圖表。
XXX * (import_machinery.rst) 是否要專門增加一節來說明模塊和包的屬性,也許可以擴展或移植數據模型參考頁中的相關條目?
XXX 庫手冊中的 runpy 和 pkgutil 等等應該都在頁面頂端增加指向新的導入系統章節的「另請參閱」鏈接。
XXX 是否要增加關於初始化 __main__ 的不同方式的更多解釋?
XXX 增加更多有關 __main__ 怪異/坑人特性的信息 (例如直接從 PEP 395 復制)。
『肆』 python程序運行沒事,但是打包成exe會運行出錯,代碼、截圖如下,謝謝
找不到文件。。。。。。。你看下需要調用什麼文件了,看看是否存在那個路徑
『伍』 計算機開發中什麼是初始化
初始化就是程序運行前將某些特定的數據恢復至默認值,達到一個最原始狀態。
1.根據 __main__ 被初始化的方式,__main__.__spec__ 會被設置相應值或是 None。
當 Python 附加 -m 選項啟動時,__spec__ 會被設為相應模塊或包的模塊規格說明。 __spec__ 也會在 __main__ 模塊作為執行某個目錄,zip 文件或其它 sys.path 條目的一部分載入時被填充。
2.在 其餘的情況 下 __main__.__spec__ 會被設為 None,因為用於填充 __main__ 的代碼不直接與可導入的模塊相對應:
交互型提示,-c 選項
從 stdin 運行
直接從源碼或位元組碼文件運行
3.請注意在最後一種情況中 __main__.__spec__ 總是為 None,即使 文件從技術上說可以作為一個模塊被導入。 如果想要讓 __main__ 中的元數據生效,請使用 -m 開關。
還要注意即使是在 __main__ 對應於一個可導入模塊且 __main__.__spec__ 被相應地設定時,它們仍會被視為 不同的 模塊。 這是由於以下事實:使用 if __name__ == "__main__": 檢測來保護的代碼塊僅會在模塊被用來填充 __main__ 命名空間時而非普通的導入時被執行。
5.9. 開放問題項
XXX 最好是能增加一個圖表。
4.XXX * (import_machinery.rst) 是否要專門增加一節來說明模塊和包的屬性,也許可以擴展或移植數據模型參考頁中的相關條目?
XXX 庫手冊中的 runpy 和 pkgutil 等等應該都在頁面頂端增加指向新的導入系統章節的「另請參閱」鏈接。
XXX 是否要增加關於初始化 __main__ 的不同方式的更多解釋?
XXX 增加更多有關 __main__ 怪異/坑人特性的信息 (例如直接從 PEP 395 復制)。
5.當 Python 附加 -m 選項啟動時,__spec__ 會被設為相應模塊或包的模塊規格說明。 __spec__ 也會在 __main__ 模塊作為執行某個目錄,zip 文件或其它 sys.path 條目的一部分載入時被填充。
在 其餘的情況 下 __main__.__spec__ 會被設為 None,因為用於填充 __main__ 的代碼不直接與可導入的模塊相對應:
交互型提示,-c 選項
從 stdin 運行
6.直接從源碼或位元組碼文件運行
請注意在最後一種情況中 __main__.__spec__ 總是為 None,即使 文件從技術上說可以作為一個模塊被導入。 如果想要讓 __main__ 中的元數據生效,請使用 -m 開關。
還要注意即使是在 __main__ 對應於一個可導入模塊且 __main__.__spec__ 被相應地設定時,它們仍會被視為 不同的 模塊。 這是由於以下事實:使用 if __name__ == "__main__": 檢測來保護的代碼塊僅會在模塊被用來填充 __main__ 命名空間時而非普通的導入時被執行。
5.9. 開放問題項
『陸』 新手求助,python 升級 pip 失敗
centos5.x默認安裝的python為2.4版本,但是部分軟體需要2.5以上的python.
所以我們需要升級Python,比如到2.7版本,步驟
curl -O
tar xfz Python-2.7.tgz
cd Python-2.7
./configure
make && make install
把/usr/bin/python更換為python2.7的軟鏈接
ln -s /usr/local/bin/python2.7.3 /usr/bin/python
用python -V確認一下版本。
但問題是把python升級後,原先安裝的pip運行可能會遇到錯誤,如下:
[plain] view plain
[root@dev1 bin]# pip
Traceback (most recent call last):
File "/usr/bin/pip", line 7, in ?
sys.exit(
File "/usr/lib/python2.4/site-packages/pkg_resources.py", line 236, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.4/site-packages/pkg_resources.py", line 2097, in load_entry_point
return ep.load()
File "/usr/lib/python2.4/site-packages/pkg_resources.py", line 1830, in load
entry = __import__(self.mole_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.4/site-packages/pip-1.2.1-py2.4.egg/pip/__init__.py", line 9, in ?
from pip.basecommand import command_dict, load_command, load_all_commands, command_names
File "/usr/lib/python2.4/site-packages/pip-1.2.1-py2.4.egg/pip/basecommand.py", line 4, in ?
from pkgutil import walk_packages
ImportError: cannot import name walk_packages
所以pip也需要升級到配套的版本:
curl -O
sh setuptools-0.6c11-py2.7.egg
easy_install pip
現在再查看/usr/local/bin目錄下面的pip:
[root@dev1 bin]# ll /usr/local/bin |grep pip
-rwxr-xr-x 1 root root 250 Oct 18 17:23 pip
-rwxr-xr-x 1 root root 258 Oct 18 17:23 pip-2.7
用pip-2.7即可。