相关疑难解决方法(0)

打包仅使用Cython编译的python库的二进制编译.so文件

我有一个名为mypackinside 的包,里面有一个模块mymod.py,而且__init__.py.出于某种原因,我不需要辩论,我需要打包这个模块(也不允许使用.py或.pyc文件).也就是说,它__init__.py是分布式压缩文件中允许的唯一源文件.

文件夹结构是:

. 
?  
??? mypack
?   ??? __init__.py
?   ??? mymod.py
??? setup.py
Run Code Online (Sandbox Code Playgroud)

我发现Cython能够通过转换.so库中的每个.py文件来实现这一点,该文件可以直接用python导入.

问题是:setup.py文件必须如何才能轻松打包和安装?

目标系统有一个virtualenv,其中必须使用允许轻松安装和卸载的任何方法安装软件包(easy_install,pip等都是受欢迎的).

我尝试了所有触手可及的东西.我阅读setuptoolsdistutils文档,计算器所有相关的问题,并试图与所有类型的命令(sdist,bdist,bdist_egg等),有很多setup.cfg和MANIFEST.in文件条目的组合.

我得到的最接近的是下面的安装文件,它将子类化bdist_egg命令以删除.pyc文件,但这会破坏安装.

如果覆盖了正确安装中包含的所有辅助文件(我需要pip freeze在venv中运行并查看mymod==0.0.1),那么在venv中 "手动"安装文件的解决方案也很好.

运行它:

python setup.py bdist_egg --exclude-source-files
Run Code Online (Sandbox Code Playgroud)

和(尝试)安装它

easy_install mymod-0.0.1-py2.7-linux-x86_64.egg
Run Code Online (Sandbox Code Playgroud)

您可能会注意到,目标是使用python 2.7的linux 64位.

from Cython.Distutils import build_ext
from setuptools import setup, find_packages
from setuptools.extension import Extension
from setuptools.command import bdist_egg
from setuptools.command.bdist_egg import  walk_egg, log 
import os

class my_bdist_egg(bdist_egg.bdist_egg):

    def zap_pyfiles(self): …
Run Code Online (Sandbox Code Playgroud)

python distutils setuptools cython setup.py

11
推荐指数
2
解决办法
5809
查看次数

setup.py从bdist中排除了一些python文件

我有一个这种架构的django项目:

  • setup.py
  • 项目/
    • __init__.py
    • manage.py
    • 设置/
      • __init__.py
      • base.py
      • dev.py
    • 网址/
      • __init__.py
      • base.py
      • dev.py

我想在没有'dev.py'文件的.egg中部署它.我尝试了不同的方法:首先,用a

find_packages(exclude=['*.dev','dev'])
Run Code Online (Sandbox Code Playgroud)

,然后使用MANIFEST.in,其中包含:

global-exclude dev.py
Run Code Online (Sandbox Code Playgroud)

当我做一个sdist时,第二个解决方案似乎有效 - 当我安装它时出现此警告:

warning: no previously-included files matching 'dev.py' found anywhere in distribution 
Run Code Online (Sandbox Code Playgroud)

,但不能用bdist-egg工作.

这是我的setup.py的一部分:

from setuptools import setup, find_packages
project import VERSION


packages = [
        'project',
        'project.settings',
        'project.urls',
]

setup(name='project',
  version=VERSION,
  package_dir = {'project' : 'project'},
  description  = 'My Project',
  author       = 'Simon Urli',
  author_email = '',
  url = '',
  packages = packages, #find_packages('project',exclude=['*.dev', 'dev']),
)
Run Code Online (Sandbox Code Playgroud)

请注意,我使用python 2.6.6,也许这很重要.知道如何创建我的鸡蛋正确排除dev文件?

python deployment django installation setuptools

9
推荐指数
2
解决办法
3045
查看次数