对于Python是否具有程序包/模块管理系统?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解python包含什么模块,并且为您提供关于Python3解释器是否具有JIT功能?、Python
对于Python是否具有程序包/模块管理系统?感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解python包含什么模块,并且为您提供关于Python 3解释器是否具有JIT功能?、Python 模块管理、Python 模块管理工具 pip、Python-检查用户是否具有管理员权限的宝贵知识。
本文目录一览:- Python是否具有程序包/模块管理系统?(python包含什么模块)
- Python 3解释器是否具有JIT功能?
- Python 模块管理
- Python 模块管理工具 pip
- Python-检查用户是否具有管理员权限
Python是否具有程序包/模块管理系统?(python包含什么模块)
Python是否具有包/模块管理系统,类似于Ruby在哪里可以使用rubygems gem install packagename
?
在“ 安装Python模块”上
,我仅看到对的引用python setup.py install
,但这需要您首先找到该软件包。
答案1
小编典典最近的进展
2014年3月 :好消息!Pip随附了Python
3.4。Pip长期以来一直是Python的事实上的标准包管理器。您可以这样安装软件包:
pip install httpie
哇!这是所有Python版本中的最佳功能。它使每个人都可以访问社区丰富的图书馆。新手不再因设置困难而无法使用社区库。
但是 ,Python打包经验仍然有许多令人沮丧的地方。累积地,它们使Python对新手来说非常不受欢迎。同样,长期的忽视历史(即从Python
2.0到Python 3.3一直没有使用包管理器交付14年)确实损害了社区。我在下面都介绍。
突出的挫败感
重要的是要理解,尽管有经验的用户能够解决这些问题,但它们却是Python新手的重大障碍。实际上,困难和普遍的用户不友好可能阻止了其中许多人。
PyPI网站是有帮助的
带有程序包管理器的每种语言都有一个官方(或准官方)存储库,供社区下载和发布程序包。Python具有Python包索引PyPI。
https://pypi.python.org/pypi
让我们将其页面与RubyGems和Npm(节点包管理器)的页面进行比较。
- https://rubygems.org/gems/rails软件包的RubyGems页面
rails
- https://www.npmjs.org/package/express软件包的Npm页面
express
- https://pypi.python.org/pypi/simplejson/软件包的PyPI页面
simplejson
您将看到RubyGems和Npm页面都以该程序包的一行说明开始,然后是如何安装的友好说明。
同时,天真地浏览PyPI的所有不幸的Python用户都会感到困扰。在https://pypi.python.org/pypi/simplejson/上,他们找不到任何有用的说明。但是,有一个绿色的大“下载”链接。遵循它并非没有道理。啊哈,他们点击!他们的浏览器下载.tar.gz
文件。许多Windows用户甚至无法打开它,但是如果他们坚持不懈,他们最终可能会提取它,然后运行setup.py
并最终在Google的帮助下运行setup.pyinstall
。有些人会放弃并重新发明轮子。
当然,所有这些都是错误的。安装软件包的 最简单 方法是使用Pip命令。但是PyPI甚至没有提到Pip。相反,它引导他们走下了一条古老而乏味的道路。
错误:找不到vcvarsall.bat
Numpy是Python最受欢迎的库之一。尝试使用Pip安装它,您会收到以下神秘错误消息:
错误:找不到vcvarsall.bat
很少有人能成功。
为了进行比较,在相同情况下,Ruby会输出此消息,该消息说明了正在发生的事情以及如何修复它:
请更新您的PATH以包含构建工具,或从http://rubyinstaller.org/downloads下载DevKit并按照http://github.com/oneclick/rubyinstaller/wiki/Development-
Kit上的说明进行操作
发布包很难
Ruby和Nodejs随附功能齐全的软件包管理器Gem(自2007年起)和Npm(自2011年起),并培育了以GitHub为中心的共享社区。Npm使发布软件包就像安装它们一样容易,它已经有64k软件包。RubyGems列出了72k个软件包。古老的Python软件包索引仅列出41k。
历史
面对“包含电池”的座右铭,直到2014年Python一直没有包装管理器发货。
在Pip之前,事实上的标准是一个命令 easy_install
。这是严重的不足。was no命令用于卸载软件包。
Python 3解释器是否具有JIT功能?
我发现,当我向Python提出更多要求时,python并未100%使用我的机器资源,而且速度不是很快,与许多其他解释型语言相比,它很快,但是与编译语言相比,我认为区别是真的很棒。
是否可以使用Python 3中的即时(JIT)编译器来加快处理速度?
通常,只有JIT编译器才能提高解释语言的性能,所以我指的是这种方法,如果有其他解决方案可用,我希望接受新的答案。
Python 模块管理
导入新的模块
创建一个 calculate.py 文件
print(''ok'')
def add(x,y):
return x + y
def sub(x,y):
return x - y
再创建一个 bin.py 文件调用 calculate.py 模块
import sys
import calculate # 导入 calculate 模块, 模块会在 sys.path 中搜索
print(calculate.add(1,2)) # 调用 calculate 模块中的 add 方法,需要写成 calculate.add()
print(sys.path) # 查看 pyton 搜索模块
运行结果:
ok
3
[''D:\\python_script\\alex_test\\day20'', ''D:\\python_script\\alex_test'', ''D:\\python35\\python35.zip'', ''D:\\python35\\DLLs'', ''D:\\python35\\lib'', ''D:\\python35'', ''D:\\python35\\lib\\site-packages'']
通过 from ... import 方法来进行调用 calculate 模块中的方法
from calculate import add,sub
print(add(1,2)) # 直接使用 add() 进行调用
运行结果:
ok
3
##创建别名
from calculate import add as plus # 这里程序只能调用 plus,而 add 则会失效
# print(add(1,2)) 报 NameError: name ''add'' is not defined 错误
print(plus(1,2))
运行结果:
ok
3
##调用其他目录下的模块 logger.py 文件内容
def write_log():
print("logging")
两种方式进行调用
#方法一:
from web.logger import write_log
write_log()
运行结果:
logging
#方法二:
from web import logger
logger.write_log()
运行结果:
logging
注意,如果模块下面的 __ init__ .py 的文件内容,import 和 from...import 都会执行 __ init__ .py 中的语句。
导入模块的时候注意模块的路径
import os,sys
BABE_DIR = os.path.dirname(os.path.dirname(__file__))
# 通过 __file__ 获取当前执行文件的路径及名称
# 通过 os.path.dirname() 获得上一级的路径
sys.path.append(BABE_DIR) # 系统执行环境添加需要的路径
print(sys.path)
Python 模块管理工具 pip
Python 开发程序中可能用到非系统模块,pip可以方便的进行管理这些模块(像Java中的Maven管理jar包一样,Linux系统中的yum,apt-get等)pip 的安装步骤:
1、官方介绍安装方法:
1> 下载 get-pip.py https://bootstrap.pypa.io/get-pip.py2> python get-pip.py(注意python版本的区别)
2、总结的安装方法:
1> wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.pypython get-pip.py (注意python版本的区别)
2> wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb
1、tar -xf pip-1.5.4.tar.gz
2、进入文件夹pip-1.5.4
3、python setup.py intall(注意python版本的区别)
3、Ubuntu 中安装pip最简单:sudo apt-get install python-pip (或者python3-pip),默认的情况下应该是带的
4、Centos 中:yum install python-pip
如果报:ImportError: No module named setuptools解决办法:
wget --no-check-certificate https://pypi.python.org/packages/source/d/distribute/distribute-0.7.3.zip#md5=c6c59594a7b180af57af8a0cc0cf5b4a
如果报 :setuptools Compression requires the (missing) zlib
解决方法:
1、yum -y install zlib
2、yum -y install zlib-devel
3、重新编译python
pip常见的命令见下:(如果是python3的话,pip3 + command)
1> pip install -r F:/python_install.txt 批量安装模块(Python_install.txt 内容:argparse)2> pip install <modules> 安装单个模块
3> pip install -U <modules> 更新单个模块到最新的版本
4> pip list 列举已经安装的模块
5> pip list -o 列举所有过时的模块
6> pip list -u 将所有过时的模块更新为最近版本
其他的命令或者参数可参考:http://www.pip-installer.org/en/latest/reference/index.html
备注:pip list 使用中如果报:ImportError: cannot import name HTTPSHandler
解决办法:
yum安装openssl和openssl-devel。然后重新编译python
yum -y install openssl
yum -y install openssl-devel
Python-检查用户是否具有管理员权限
我正在用Python 3.x编写一个小程序作为自学项目。我的想法是让程序允许用户输入两个文本字段,然后将用户的输入插入两个特定注册表项的值中。
有没有一种简单的方法可以检查当前用户是否可以访问注册表?我宁愿告诉用户他/她需要管理员特权,而不是让程序发疯并崩溃,因为它试图访问限制区域。
我希望它在程序启动后立即进行检查,然后再为用户提供任何输入选项。为此需要什么代码?
编辑:如果不明显,这是针对Windows平台的。
答案1
小编典典我需要一个简单的Windows / Posix解决方案来测试用户是否具有文件系统的root /
admin特权,而无需安装第三方解决方案。我了解依赖环境变量时存在漏洞,但它们符合我的目的。可能可以扩展此方法以读取/写入注册表。
我在WinXP,WinVista和Wine上使用Python 2.6 / 2.7进行了测试。如果有人知道这在Pyton
3.x和/或Win7上不起作用,请告知。谢谢。
def has_admin(): import os if os.name == ''nt'': try: # only windows users with admin privileges can read the C:\windows\temp temp = os.listdir(os.sep.join([os.environ.get(''SystemRoot'',''C:\\windows''),''temp''])) except: return (os.environ[''USERNAME''],False) else: return (os.environ[''USERNAME''],True) else: if ''SUDO_USER'' in os.environ and os.geteuid() == 0: return (os.environ[''SUDO_USER''],True) else: return (os.environ[''USERNAME''],False)
今天关于Python是否具有程序包/模块管理系统?和python包含什么模块的讲解已经结束,谢谢您的阅读,如果想了解更多关于Python 3解释器是否具有JIT功能?、Python 模块管理、Python 模块管理工具 pip、Python-检查用户是否具有管理员权限的相关知识,请在本站搜索。
本文标签: