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即可。