我正在使用py2app/setuptools构建一个应用程序,所以一旦它创建了应用程序包,我想对dist文件夹采取一些操作,例如创建一个安装程序/上传它.
有办法吗?我找到了一些安装后的解决方案但没有后期构建
或者我可以从我自己的脚本中调用'python setup.py py2app'并执行此操作,但如果可以在setup.py中完成它会更好
当我使用pip将东西安装到virtualenv中时,我经常会看到消息"UserWarning:setupbuols的Unbuilt egg".我总是安全地忽略它并开展我的业务,这似乎并没有给我带来任何问题.
但是我突然被好奇心砸在了脸上,想知道是否有人可以解释它的含义,确切地说?
此外,使用分布的新virtualenv选项是否适合所有这些?我应该使用它,还是只是忽略它直到distutils2出来?(道歉,如果这完全不相关 - 也许它应该是一个新问题?)
谢谢!
我正在开发一个django应用程序,它取决于私人bitbucket存储库中的应用程序,例如ssh:/...@ bitbucket.org/username/my-django-app.是否可以将此URL添加到我的setup.py中的install_requires列表中?尝试过各种各样的可能性,
在setup.py
文件中,我这样写:
from distutils.core import setup
setup(
# skip a lot of information here..
scripts = ["chilin2/ChiLin2.py"],
)
Run Code Online (Sandbox Code Playgroud)
我第一次成功设置了我的包.过了一会儿,我line 209
将脚本更新为:
$ sed -n 209p chilin2/ChiLin2.py
macs2_on_merged.param["control_opt"] = "-c " + macs2_on_merged.input["control"]
Run Code Online (Sandbox Code Playgroud)
然后又跑setup.py
了
$ sudo python3 setup.py install
running install
running build
running build_py
running build_scripts
running install_lib
running install_scripts
changing mode of /usr/local/bin/ChiLin2.py to 755
running install_egg_info
Removing /usr/local/lib/python3.2/site-packages/chilin2-0.1-py3.2.egg-info
Writing /usr/local/lib/python3.2/site-packages/chilin2-0.1-py3.2.egg-info
Run Code Online (Sandbox Code Playgroud)
但是,我发现脚本文件没有被更改..
$ sed -n 209p /usr/local/bin/ChiLin2.py
macs2_on_merged["control_opt"] = "-c " + macs2_on_merged.input["control"]
Run Code Online (Sandbox Code Playgroud)
我尝试过setup.py …
我试图在OS X Mountain Lion中使用pip安装pyopencv,但导致setuptools失败.以下是我的工作.setuptools中的"库"是什么?我之前没见过.我已经通过自制软件和其他东西安装了opencv.在pyopencv的doucmentation中,它没有解释使用pip only source install的安装,
(img2)appleparan@LiamMac src $ brew install cmake
Warning: cmake-2.8.11.2 already installed
(img2)appleparan@LiamMac src $ brew install cmake --upgrade
Warning: cmake-2.8.11.2 already installed
(img2)appleparan@LiamMac src $ brew install opencv
Warning: opencv-2.4.6.1 already installed
(img2)appleparan@LiamMac src $ brew install boost
Warning: boost-1.54.0 already installed
(img2)appleparan@LiamMac src $ pip install pyopencv
Downloading/unpacking pyopencv
Could not find a version that satisfies the requirement pyopencv (from versions: 2.0.wr1.0.1-demo, 2.0.wr1.0.1, 2.0.wr1.1.0, 2.1.0.wr1.0.0, 2.1.0.wr1.0.1, 2.1.0.wr1.0.2, 2.1.0.wr1.1.0, 2.1.0.wr1.2.0, 2.1.0.wr1.2.0-demo, 2.1.0.wr1.2.0)
Cleaning up... …
Run Code Online (Sandbox Code Playgroud) 我有一个我创建的Python包,我正在使用setuptools.setup()
它来安装它.该程序包包含可执行脚本,使用scripts
该setup()
函数的参数.
我这样安装:
sudo python setup.py install
Run Code Online (Sandbox Code Playgroud)
安装后,可执行脚本位于/usr/local/bin
.唯一的问题是权限是:
-rwxr-x--- 1 root root 57 Aug 23 15:13 example_script*
Run Code Online (Sandbox Code Playgroud)
代替:
-rwxr-xr-x 1 root root 57 Aug 23 15:13 example_script*
Run Code Online (Sandbox Code Playgroud)
任何人都知道我如何指定输出可执行文件的权限或默认为什么不允许任何人执行?
供参考:我的umask是0027
和许可/usr/local/bin/
是drwxr-xr-x
(所有者=根组=根).所有可执行脚本都-rwxr-xr-x
在开发区域中具有权限.
当我通过使用./setup.py install
将包安装到pyenv环境中时,包的脚本不会添加到pyenv的shim目录中.因此,脚本不在我的PATH中,无法正常执行.
我的包正在使用setuptools.我的包setup.py
指定了应该安装的脚本.
SCRIPTS = [
'bin/olio_msg_send_test_messages',
]
setup(
...
scripts=SCRIPTS,
...
)
Run Code Online (Sandbox Code Playgroud)
当我使用以下命令安装包时:
./setup.py build
./setup.py install
Run Code Online (Sandbox Code Playgroud)
然后脚本安装到包的目录中:
...
Installing olio_msg_send_test_messages script to /home/wayne/.pyenv/versions/2.6.9/bin
...
Run Code Online (Sandbox Code Playgroud)
文件确实存在:
$ ls -l /home/wayne/.pyenv/versions/2.6.9/bin/olio_msg_send_test_messages
-rwxrwxr-x 1 wayne wayne 240 Apr 20 09:30 /home/wayne/.pyenv/versions/2.6.9/bin/olio_msg_send_test_messages
Run Code Online (Sandbox Code Playgroud)
但是,pyenv的shims目录中没有添加任何填充程序:
$ ls -l ~/.pyenv/shims/olio_msg_send_test_messages
ls: cannot access /home/wayne/.pyenv/shims/olio_msg_send_test_messages: No such file or directory
Run Code Online (Sandbox Code Playgroud)
因此,脚本不在我的PATH中,并且无法通过键入其名称来执行.
我需要做什么才能在安装软件包时创建pyenv填充程序./setup.py install
?
版本:
为了制作python setup.py test
linting,testing和coverage命令,我创建了一个自定义命令.但是,它不会再安装指定的依赖项tests_require
.我怎样才能让两者同时工作?
class TestCommand(setuptools.Command):
description = 'run linters, tests and create a coverage report'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
self._run(['pep8', 'package', 'test', 'setup.py'])
self._run(['py.test', '--cov=package', 'test'])
def _run(self, command):
try:
subprocess.check_call(command)
except subprocess.CalledProcessError as error:
print('Command failed with exit code', error.returncode)
sys.exit(error.returncode)
def parse_requirements(filename):
with open(filename) as file_:
lines = map(lambda x: x.strip('\n'), file_.readlines())
lines = filter(lambda x: x and not x.startswith('#'), lines)
return list(lines)
if __name__ == '__main__': …
Run Code Online (Sandbox Code Playgroud) 需要知道setup.py和setup.cfg之间的区别。两者都在openstack项目中得到显着使用
我正在打包我自己的Python包.我使用setuptools和wheel来捆绑它和pip进行安装(在开发模式和测试PyPI存储库中).
每个用于安装包的pip命令都在--process-dependency-links
这里使用.我将放下此选项以进行简化,此选项将隐含在此处.
其中一个依赖项在PyPI中被破坏,但在开发存储库问题已修复.我知道哪个提交修复了这个问题,我知道它的SHA-1总和,所以我知道要下载哪个tarball.所以我在setup.py文件中这样做了:
...
install_requires=[
'hbmqtt>0.9.0'
],
dependency_links=[
'https://github.com/beerfactory/hbmqtt/archive/f4330985115e3ffb3ccbb102230dfd15bb822a72.zip#egg=hbmqtt-0.9.1'
],
...
Run Code Online (Sandbox Code Playgroud)
当我在开发模式下安装软件包(通过setuptools和pip)时,从git repo下载软件包.然后我可以分发我的包的源代码.
python setup.py sdist
twine upload -s --sign-with gpg2 -r testpypi dist/<pkg-name>-<version>.tar.gz
Run Code Online (Sandbox Code Playgroud)
然后我可以从PyPI安装它.如果我没有同时设置--no-cache-dir
和--no-binary :all:
选项(--no-cache-dir
只需要确保没有从缓存中安装包),首先安装看起来没问题.Pip下载源然后制作轮子.解决依赖关系很顺利,一切看起来都还可以.Pip下载适当版本的(在我的示例中)HBMQTT包并安装它.同时pip制作轮子然后缓存它.所以,第二次安装(无--no-binary
选项明显的理由,并与--upgrade
和-I
期权)失败,因为不满足要求:PIP不能与0.9.1版本找到HBMQTT包.PyPI中HBMQTT的最新版本是0.9.0.因此pip在尝试从wheel包安装时不会处理依赖关系链接.
当我尝试制作wheel(python setup.py bdist_wheel)并将其上传到测试PyPI时,会发生同样的事情.从PyPI安装失败以及从下载(或由我制作)轮文件失败.
我认为麻烦位于点或轮.我不知道哪一个负责从车轮安装.
所以我的问题是我现在应该做些什么?对于这种情况,确实存在哪些变通办法?我认为只有分支要求HBMQTT仓库并制作我自己的包,直到PyPI破坏了包裹.
python ×10
setuptools ×10
pip ×4
distutils ×2
dependencies ×1
distribute ×1
opencv ×1
openstack ×1
packaging ×1
permissions ×1
py2app ×1
pyenv ×1
python-2.7 ×1
python-3.x ×1
python-wheel ×1
scripting ×1
setup.py ×1
testing ×1