我是Python的新手,我只是想了解它的包是如何工作的.据推测,"鸡蛋"是某种包装机制,但是它们可以快速概述它们扮演的角色,也可能是一些关于它们为什么有用以及如何创建它们的信息?
问:我们在Python中与Ruby版本管理器'rvm'有任何功能相同的东西吗?
(RVM可让您轻松切换完全不同版本的Ruby解释器之间和不同组的宝石(模块).有关解释的下载,编译安装开关(-s)和宝石的一切都将通过调用RVM照顾.这是全部在您的常规用户帐户下运行.)
我对Python中的egg文件有疑问.
我有很多由代码组织的Python代码,我正在尝试创建egg文件.我正在遵循指示,但它们很常见.
根据它,似乎我需要一个setup.py文件.
java -jar <jar file>
呢?在我过于复杂的简单内容的无尽追求中,我正在研究最"Pythonic"的方式,在Python egg包中的典型' config.py '中提供全局配置变量.
传统方式(aah,good ol'#define!)如下:
MYSQL_PORT = 3306
MYSQL_DATABASE = 'mydb'
MYSQL_DATABASE_TABLES = ['tb_users', 'tb_groups']
Run Code Online (Sandbox Code Playgroud)
因此,全局变量以下列方式之一导入:
from config import *
dbname = MYSQL_DATABASE
for table in MYSQL_DATABASE_TABLES:
print table
Run Code Online (Sandbox Code Playgroud)
要么:
import config
dbname = config.MYSQL_DATABASE
assert(isinstance(config.MYSQL_PORT, int))
Run Code Online (Sandbox Code Playgroud)
这是有道理的,但有时可能有点混乱,特别是当你试图记住某些变量的名称时.此外,提供了一个"配置"对象,用变量的属性,可能会更加灵活.所以,从bpython config.py文件中取得领先,我想出了:
class Struct(object):
def __init__(self, *args):
self.__header__ = str(args[0]) if args else None
def __repr__(self):
if self.__header__ is None:
return super(Struct, self).__repr__()
return self.__header__
def next(self):
""" Fake iteration functionality.
"""
raise StopIteration
def …
Run Code Online (Sandbox Code Playgroud) 有人可以解释egg-info目录如何与各自的模块绑定?例如,我有以下内容:
/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/
Run Code Online (Sandbox Code Playgroud)
我假设egg-info目录是使相应的模块对setuptools(easy_install)可见,对吧?如果是这样,setuptools如何将egg-info目录绑定到模块目录?
假设我在正确的轨道上,例如着想......如果我想让矿setuptools的可见现有的包,我可能只是符号链接模块目录和卵子信息目录的位点包目录?我本来只是尝试这样做我自己,但我不知道如何测试,如果包是setuptools的可见.如果你还可以告诉我如何测试这个奖励积分:)
我想了解这一切的主要原因是因为我想符号链接我的一些模块到站点包,这样我可以对其进行更改,并有改变使用它们,而无需重新安装脚本可见每次更换后,来自PyPI的鸡蛋.
使用Google App Engine管理第三方Python库的最佳策略是什么?
说我想使用Flask,一个webapp框架.博客条目说这样做,这似乎不对:
$ cd /tmp/
$ wget http://pypi.python.org/packages/source/F/Flask/Flask-0.6.1.tar.gz
$ tar zxf Flask-0.6.1.tar.gz
$ cp -r Flask-0.6.1/flask ~/path/to/project/
(... repeat for other packages ...)
Run Code Online (Sandbox Code Playgroud)
必须有更好的方法来管理第三方代码,特别是如果我想跟踪版本,测试升级或两个库共享一个子目录.我知道,Python可以从zipfiles导入模块和PIP可以用美妙的需求文件工作,我已经看到了PIP具有zip
与GAE使用命令.
我ez_setup
从这里下载了代码:http://peak.telecommunity.com/dist/ez_setup.py
并运行它,但我认为setuptools
没有正确安装.当我尝试打开一个鸡蛋easy_install
时,我得到一个NameError.有什么想法吗?
这是具体的错误:
Traceback (most recent call last):
File "C:...setup.py", line 223, in <module>
easy_install eggsetup.py
NameError: name 'easy_install' is not defined
Run Code Online (Sandbox Code Playgroud) 为了在我们的公司内部分python项目,我需要进行可安装的分发.
这应该包括:
是否有一个简单的插件,(例如bdist_wheel的替代品)不仅会编译一个轮子而且还会编译该项目的组件?
显然我可以编写脚本,但我希望可能有一个快捷方式,可以用更少的步骤构建软件包+依赖项.
这需要在Windows + Linux上使用Python 2.7.
是否可以直接运行Python egg文件,因为您可以使用Java运行jar文件?
例如,使用Java,您可能会遇到以下情况:
$ java -jar jar-file
Run Code Online (Sandbox Code Playgroud) 我有点困惑.似乎有两种不同类型的Python包,源代码分发(setup.py sdist)和egg分发(setup.py bdist_egg).
两者似乎只是具有相同数据的档案,即python源文件.一个区别是pip
,最推荐的包管理器无法安装鸡蛋.
两者之间的区别是什么?分发我的包的方式是什么?
(注意,我不想通过PyPI分发我的包,但我想使用从PyPI获取依赖关系的包管理器)
egg ×10
python ×10
config ×1
deployment ×1
equivalent ×1
packaging ×1
pip ×1
python-wheel ×1
rvm ×1
sdist ×1
setuptools ×1
windows ×1