我最近看到了很多关于互联网的设置工具.最近,我阅读了James Bennett的On包装文章,了解为什么没有人应该使用setuptools.从我在Freenode的#python时代开始,我知道那里有一些人绝对厌恶它.我会把自己算在他们中间,但我确实使用它.
我已经使用setuptools进行足够的项目来了解它的不足之处,我更喜欢更好的东西.我并不特别喜欢鸡蛋格式以及它是如何部署的.由于所有setuptools的问题,我还没有找到更好的选择.
我对像pip这样的工具的理解是,它意味着是一个easy_install替代品(不是setuptools).实际上,pip使用了一些setuptools组件,对吧?
我的大多数软件包都使用了setuptools-aware的setup.py,它声明了所有依赖项.当他们准备好了,我将构建一个sdist,bdist和bdist_egg,并将它们上传到pypi.
如果我想切换到使用pip,我需要做些什么样的更改才能摆脱easy_install依赖?声明的依赖项在哪里?我猜我需要摆脱使用egg格式,并提供源代码分发.如果是这样,我如何生成egg-info目录?或者我甚至需要?
这将如何改变我对virtualenv的使用?virtualenv不使用easy_install来管理环境吗?
这会如何改变我对"开发"命令提供的setuptools的使用?我不应该使用它吗?有什么选择?
我基本上试图了解我的开发工作流程的样子.
在任何人建议之前,我不是在寻找依赖于操作系统的解决方案.我主要关注的是debian linux,但deb包不是一个选项,因为Ian Bicking 在这里概述了这个原因.
是否可以指定(可编辑的)源依赖关系setup.py已知驻留在本地文件系统上?
请考虑以下目录结构,所有目录结构都位于单个VCS存储库中:
projects
utils
setup.py
...
app1
setup.py
... # app1 files depend on ../utils
app2
setup.py
... # app2 files depend on ../utils
Run Code Online (Sandbox Code Playgroud)
给出以下命令:
cd projects
mkvirtualenv app1
pip install -e app1
Run Code Online (Sandbox Code Playgroud)
我想安装app1的所有依赖项,包括"utils",这是一个"可编辑"的依赖项.同样,如果我为app2做了同样的事情.
我已经试过所有不同组合打file://...的网址,install_requires并dependency_links无济于事.我想使用依赖链接URL src+file://../utils,这会告诉setuptools包的源是在这个相对路径的文件系统上.有没有办法做到这一点?
使用使用setuptools的setup.py打包Python包时:
from setuptools import setup
...
Run Code Online (Sandbox Code Playgroud)
源分发创建者:
python setup.py sdist
Run Code Online (Sandbox Code Playgroud)
像往常一样,不仅包括MANIFEST.in中指定的文件,而且它也包括Subversion在包目录下列出的所有文件控制版本.这非常烦人.它不仅难以对我的包中分发的文件进行任何形式的显式控制,而且意味着当我按照"svn export"而不是"svn checkout"构建我的包时,我的内容包可能会有很大的不同,因为没有.svn元数据setuptools会对要包含的内容做出不同的选择.
我的问题:如何关闭这种可怕的行为,以便"setuptools"以同样的方式处理我的项目,无论我使用的是Subversion,还是从未听说过的版本控制,或者是使用"svn export"创建的裸树在我的项目结束时创建,以确保它在我的工作目录之外的某个地方干净地构建?
到目前为止我管理的最好的是一个丑陋的猴子补丁:
from setuptools.command import sdist
del sdist.finders[:]
Run Code Online (Sandbox Code Playgroud)
但这是Python,而不是丛林,所以当然我想要一个更好的解决方案,根本不涉及猴子.我如何通过查看MANIFEST.py中可见的,可预测的规则来驯服setuptools,关闭它的魔力并让它表现得明智?
打包Scala应用程序以在台式PC上使用的最简单方法是什么?我猜这将是一个jar文件的形式.
目前我正在使用SBT编译和运行程序
我对安装了Scala的机器(以及类路径中的库)以及只有Java的机器的解决方案感兴趣.
说我在clojure中创建一个程序,我必须将它传递给客户端.客户端确实有一些计算机知识,但他不知道/想要启动repl,加载我的程序,然后运行它.他想双击exe文件或运行shell脚本
我如何打包我的程序并交付(程序本身与clojure罐)?
我是maven的新手.
我有一个项目,我尝试用maven3构建.
当我运行命令时,mvn -X clean install我收到了错误.
[root@localhost]# mvn -X clean install
Apache Maven 3.0.4 (r1232337; 2012-01-17 14:14:56+0530)
Maven home: /usr/local/maven
Java version: 1.6.0_24, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-279.9.1.el6.x86_64", arch: "amd64", family: "unix"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/local/maven/conf/settings.xml
[DEBUG] Reading user settings from /root/.m2/settings.xml
[DEBUG] Using local repository at /root/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10 for /root/.m2/repository …Run Code Online (Sandbox Code Playgroud) 我有一个中央包,提供其他包依赖的几个接口(让我们调用一个Client).那些其他包提供了那些第一个接口(UDPClient,TCPClient)的几个实现.我Client通过调用NewClient中央包来实例化,并从一个依赖包中选择并调用相应的客户端实现.
当我想告诉中央包关于那些其他包时,它就会崩溃,所以它知道它可以创建什么客户端.这些依赖的客户端实现也导入中央包,创建Go不允许的循环依赖.
前进的最佳方式是什么?我不想将所有这些实现混合在一个包中,并且创建一个单独的注册表包似乎有点过分.目前,我将每个实现注册本身与中央包一起注册,但这要求用户知道在每个使用客户端的单独二进制文件中导入每个实现.
import (
_ udpclient
_ tcpclient
client
)
Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用外部库(paramiko)的python脚本.如果我要发布包,我怎么包装paramiko呢?无论如何我可以给它,因为我们可以在java中将依赖项作为.jar文件提供?
编辑:我在脑海中想到的是提供一个脚本和一个包含所有相关模块的存档文件,这些模块不需要最终用户运行任何setup.py
将更改推送到用Python编写的程序的最佳方法是什么?我有一个用Python编写的软件,会定期更新.最好的方法是什么?所有机器都将安装Windows 7.
另外,请原谅我的问题含糊不清.这将是我第一次实施更新程序.随意提及您希望我添加的细节.
我在MacOSX上构建的独立包中为DMG背景添加自定义图标时遇到了麻烦.我在项目的根目录中添加了一个包.自定义图标正在从中加载,但DMG背景图标不是.我使用的是Java fx 2.2.3和jdk1.7.0_09.这是为其生成的详细输出.
Detected JavaFX Ant API version 1.2 Launching <fx:jar> task from
/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/ant-javafx.jar
Launching <fx:deploy> task from
/Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk/Contents/Home/lib/ant-javafx.jar
Copying 102 files to
/Users/apple/NetBeansProjects/JavaFXApplication2/dist Using base JDK
at: /Library/Java/JavaVirtualMachines/jdk1.7.0_09.jdk Using default
package resource [Bundle config file] (add package/macosx/Info.plist
to the class path to customize) Using custom package resource [icon]
(loaded from file
/Users/apple/NetBeansProjects/JavaFXApplication2/package/macosx/javaFXApplication2.icns)
Creating app bundle:
/Users/apple/NetBeansProjects/JavaFXApplication2/dist/bundles/JavaFXApplication2.app
Config files are saved to
/var/folders/vd/nyxf14z53tx56g2_lbqcnfrr0000gn/T/build1722966263281326253.fxbundler/macosx.
Use them to customize package. Building DMG package for
JavaFXApplication2 Using default package resource [Bundle config
file] …Run Code Online (Sandbox Code Playgroud) packaging ×10
python ×5
setuptools ×3
app-bundle ×1
build ×1
clojure ×1
deployment ×1
distribute ×1
download ×1
egg ×1
go ×1
jar ×1
java ×1
javafx-2 ×1
macos ×1
maven-3 ×1
pip ×1
pom.xml ×1
sbt ×1
scala ×1