标签: packaging

使用配置文件打包Python应用程序

我正在使用ConfigParser来配置我的应用程序,现在我想让它易于分发,同时保持可配置性.

我想我需要一个包含配置文件模板的目录,以及一些生成配置以实际使用这些模板的方法.然后我需要一个存储它的地方,可以在virtualenv,用户主目录等工作.我希望它与普通的Unix软件包的工作方式一样接近,即在其他方面有配置,但在主目录中有覆盖.是否有现成的解决方案,如果没有,我应该在setup.py等中放置什么才能让它像我想要的那样工作?

python packaging configuration-files

15
推荐指数
1
解决办法
4496
查看次数

使用NuGet发布可执行文件和网站

我希望标准化我们的库,可执行文件和网站的发布机制.

NuGet网站上的所有文档都讨论了发布库,工具和源文件,但在发布完全打包的可执行文件和网站时似乎没有任何关于目录结构的指导.

对此有任何指导或现有惯例吗?

如果我要做些什么,它看起来像:

exe/net40/*.*
website/net40/**/*.*
Run Code Online (Sandbox Code Playgroud)

.net asp.net packaging nuget

15
推荐指数
3
解决办法
6984
查看次数

PIP安装"错误:包目录'X'不存在"

我正在尝试通过PIP 安装此软件包.它给了我以下错误:

error: package directory 'RTbatch' does not exist
Run Code Online (Sandbox Code Playgroud)

我觉得这很奇怪,因为相关的setup.py并没有提到任何packages变量,只是py_modules.

怎么了?你能帮我吗?

以下是完整输出pip install -e RTbatch:

Obtaining file:///home/chymera/RTbatch
  Running setup.py (path:/home/chymera/RTbatch/setup.py) egg_info for package from file:///home/chymera/RTbatch
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'heywords'
      warnings.warn(msg)

    error: package directory 'RTbatch' does not exist
    Complete output from command python setup.py egg_info:
    /usr/lib64/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'heywords'

  warnings.warn(msg)

running egg_info

creating RTbatch.egg-info

writing requirements to RTbatch.egg-info/requires.txt

writing RTbatch.egg-info/PKG-INFO

writing top-level names to RTbatch.egg-info/top_level.txt

writing …
Run Code Online (Sandbox Code Playgroud)

python packaging pip easy-install

15
推荐指数
1
解决办法
2万
查看次数

PyPI 400上传错误

我在PyPI中创建了一个名为virtdc的包.我做了一些更改并上传了2个不同的版本0.1.0和0.1.1.现在我通过PyPI Web界面删除了0.1.1版本,并尝试使用相同的版本号重新上传.它给我的错误如下

...
Writing virtdc-0.1.2/setup.cfg
Creating tar archive
removing 'virtdc-0.1.2' (and everything under it)
running register
Registering virtdc to http://pypi.python.org/pypi
Server response (200): OK
running upload
Submitting dist/virtdc-0.1.2.tar.gz to http://pypi.python.org/pypi
Upload failed (400): This filename has previously been used, you should use a different version.
Run Code Online (Sandbox Code Playgroud)

并且PyPI不允许包的4个以上版本.所以我们必须删除一些版本并再次上传.

即使在此上传错误之后,也可以使用第一个内容描述.但是下载链接不可用.你可以在这里找到我的包裹

有人可以帮我吗?谢谢

packaging version pypi python-2.7

15
推荐指数
2
解决办法
3882
查看次数

如何为没有setup.py的python项目创建deb包

我发现的有关此主题的任何文档都提到构建 deb 包的“唯一”要求是拥有正确的setup.py(和requirements.txt)。例如,在dh-virtualenv 教程stdeb 文档Debian 的 python 库风格指南中。

但现在新的(令人惊奇的)工具,如诗,允许开发(并上传到 PyPI)Python 项目,而无需任何setup.py(此文件和其他几个文件,包括requirements.txt全部被替换pyproject.toml)。我相信flit也允许这样做。

我开发了一个由诗歌管理的 python 项目,并想将其打包到 Ubuntu/Debian 中。我想,作为一种解决方法,我仍然可以编写一个从和 一个文件setup.py中获取其值的文件(使用来自 的值手动编写)。pyproject.tomlrequirements.txtpoetry.lock

但是,有没有办法在没有任何文件的情况下做到这一点setup.py

python packaging deb setup.py python-poetry

15
推荐指数
1
解决办法
3123
查看次数

如何在.cabal中指定对外部C库的依赖?

我在Hackage上维护了一个带有FFI绑定的库.所以我的Haskell库依赖于相应的C库及其头文件.现在我在.cabal文件中指定外部依赖项,如下所示:

PkgConfig-Depends:
      libfoo >= 1.2
Run Code Online (Sandbox Code Playgroud)

它在Linux中对我很有用.但是,我有一个库的用户报告,pkg-config在Windows 上安装相当麻烦,而他更喜欢

Includes:
      foo.h
Extra-libraries:
      foo
Run Code Online (Sandbox Code Playgroud)

我希望我的库尽可能容易构建,并且不希望强制不严格要求的构建依赖项.但是,我看到Cabal手册建议使用PkgConfig-Depends.

我的问题:

  • 对于跨平台软件包,我更喜欢哪种方式?
  • 是否有可能以.cabal这样的方式编写文件,它可以使用pkg-config和不使用?
  • 顺便说一句,它pkg-config包含在Haskell平台中(我现在没有Windows机器可以检查)?

windows haskell packaging pkg-config cabal

14
推荐指数
2
解决办法
2627
查看次数

如何为扭曲/扭曲的插件制作ubuntu/debian包?

作为后续如何编写一个setup.py用于与setuptools,分发等一起使用的扭曲/扭曲插件?,如何为扭曲的插件制作debian包?

假设正确编写了setup.py,使用cdbs/python-central/dh_python2应该可以正常工作,但到目前为止我运气不好.

这些工具的诀窍是它们基本上运行'python setup.py install --root ='然后打包最终的'',所以也许一旦上一个问题得到正确回答,那么这个问题就没有实际意义了?

这里有人成功为debian打包了一个扭曲的插件吗?

python ubuntu debian packaging twisted

14
推荐指数
1
解决办法
1023
查看次数

在可执行jar中打包Jython程序

我正在尝试将jython程序打包到一个可执行jar中,用户只需双击即可运行而无需提前安装jython.最后,我想包含一个我用jar编写的附加库,但是目前我只是尝试打包一个简单的程序并让它从jar运行.

我已经尝试按照"使用Jar方法"部分中的jar说明进行操作:Jython FAQ:使用Jar方法

我还在这里看了25-28幻灯片:Jython Update 2012幻灯片

最后在这里: stackoverflow问题:使用Jython将我的Python脚本分发为Jars

我在运行OS X 10.8.3的mac上安装了jython 2.5.3,jvm 1.6和python 2.7.3.

这些是我创建jar并运行它的步骤:

  1. 从我的jython安装目录创建jython.jar的副本.
  2. zip -r jython_copy.jar Lib (其中Lib是jython安装目录中的文件夹)
  3. cp myJythonProgram.py __run__.py(myJythonProgram.py不包含'if name == main '行)
  4. zip jython_copy.jar __run__.py
  5. export CLASSPATH=/path/to/my/app/jython_copy.jar:$CLASSPATH

我尝试使用以下三种方法运行jar:

  1. java org.python.util.jython -jar myapp.jar
  2. java -cp myapp.jar org.python.util.jython -jar myapp.jar
  3. java -jar myapp.jar -jar myapp.jar

如果我的程序不使用任何import语句,则此方法有效.

但是我遇到了一个问题,当我运行jar时无法找到一些python包.例如,当我from random import random在程序中包含该行时,我收到错误"ImportError:No module called random" .从javax.swing,java.awt,time或math导入时,程序中的行不会发生错误.

另外,我尝试用我的库和一个jython程序打包一个jar,它使用前面的步骤导入我的库以及以下附加步骤:

  1. zip jython_copy.jar myLibrary.jar
  2. jar ufm jython_copy.jar othermanifest.mf

othermanifest.mf只包含该行Class-Path: ./myLibrary.jar.

这也给出了错误"ImportError:No module named myLibrary"

如果我对错误或我应该采取的其他步骤有所了解,我将不胜感激. …

packaging jython executable-jar

14
推荐指数
1
解决办法
4408
查看次数

打包和部署企业应用程序的现代替代方案?

在异构环境中打包和部署服务器端java软件1)的现代替代方案2)

我找不到关于这个主题的大量连贯或最新信息,但我有一些想法.我会开始的

  1. 传统的应用服务器方法(Jetty,Tomcat等)
    • 将软件组装到war文件中并制作您自己的配置和部署脚本,例如,使用izpack,ant脚本,货物或类似的东西.
       
  2. 依靠集成平台,例如fabric8,servicemix,fuse等.
    • 看起来像一个很好的自以为是的方法.如果还没有使用其中一种,除了锁定之外,将应用程序重新滚动到这种格式需要一些工作.是不是摆脱大型框架的趋势?
       
  3. 将应用程序war文件捆绑到ear(Enterprise archives)文件中
    • 需要一个成熟的Java EE服务器,例如wildfly,glassfish等.除非需要这种服务器的功能,否则它会增加zip-archive可以做的很多开销.
       
  4. 虚拟机:Vagrant,Docker
    • Docker很不错,但是在Windows主机上无论如何都需要在VM中运行.虚拟机(流浪与否)会产生性能开销,并且往往依赖于复杂的配置工具,如木偶.
       
  5. 可运行的罐子,例如Capsule,maven shade plugin,One-JAR.
    • Capsule似乎很棒,它就像一个可执行的自解压zip文件,它也运行应用程序.使用嵌入式jetty,war可以从一个可执行文件中提供多个传统文件.

第一个选项一直是我的参考方法,但是需要大量的配置,安装脚本,这些脚本在不同的环境(例如,Linux,Windows)上有所不同.

哪些现代替代品使包装和部署更容易?

1)想象一下像微服务,RESTful通信等的SOA设置
.2)考虑到这一点,我们排除了PaaS诸如cloudbees,cloudfoundy等提供商.他们应该得到自己的主题.

java deployment packaging java-ee maven

14
推荐指数
1
解决办法
2234
查看次数

打包针对Debian类系统的1.5应用程序

最初的问题,Debian的Packaging Go应用程序是在三年前被问到的,当时Go是静态链接可执行文件.

现在,使用新的Go 1.5版本,其发行说明如下:

对链接器的更改允许将Go包作为共享库分发以链接到Go程序,并将Go包构建到可能链接到C程序或由C程序加载的存档或共享库中

我前往Debian GoPackaging wiki,但只是发现它还没有更新到Go 1.5,也许wiki没有被维护,或者可能不是,但是,

我只是想知道,如果我想打包一个除了官方Go包之外什么都没有的工具,我应该如何利用共享库,而不是将我的应用程序构建成一个庞大的静态链接可执行文件?

我知道官方答案可能需要一些时间,但我可以等一下.

感谢Braiam的回答,我动了一下.

  • 我按照博客的步骤head -100 debian/**/*,但我的输出完全不同于博客.我的就是以下几点.任何人都知道为什么以及如何解决?

    $ head -100 debian/**/*
    3.0 (quilt)
    
    Run Code Online (Sandbox Code Playgroud)
  • 我试图跑,gbp buildpackage --git-pbuilder但碰到了错误:

    gbp:info: Building with (cowbuilder) for sid
    Base directory /var/cache/pbuilder/base.cow does not exist
    gbp:error: 'git-pbuilder' failed: it exited with 1
    
    Run Code Online (Sandbox Code Playgroud)
  • 我检查并确认我已安装cowbuilderpbuilder安装:

    ii cowbuilder  amd64 pbuilder running on cowdancer
    ii pbuilder  all personal package builder for Debian packages
    
    Run Code Online (Sandbox Code Playgroud)

怎么了?pbuilder我用Docker构建Debian/Ubuntu包时, …

debian packaging go

14
推荐指数
1
解决办法
782
查看次数