- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
背景:我有一个负责安全的源文件。里面有魔术键和特定的算法。
是否可以从 python egg 或 wheel 包中删除这个单一的源文件?
我已经完成了使用 egg 命令只发送二进制文件。
python setup.py bdist_egg --exclude-source-files
├── setup.py
├── src
| ├── __init__.py
| ├── file1.py
| ├── file2.py
| ├── file_to_exclude.py
最佳答案
不幸的是,distutils
也不是 setuptools
提供排除单个模块的可能性,因此您必须解决它。
更新:
我已经描述了一个更好的解决方案here模仿包排除setuptools
在 find_packages()
中做.您将不得不覆盖 build_py
设置脚本中可以接受排除模式列表的命令,与 exclude
相同列入find_packages
.在您的情况下,它将是:
import fnmatch
from setuptools import find_packages, setup
from setuptools.command.build_py import build_py as build_py_orig
exclude = ['src.file_to_exclude']
class build_py(build_py_orig):
def find_package_modules(self, package, package_dir):
modules = super().find_package_modules(package, package_dir)
return [(pkg, mod, file, ) for (pkg, mod, file, ) in modules
if not any(fnmatch.fnmatchcase(pkg + '.' + mod, pat=pattern)
for pattern in exclude)]
setup(
...,
packages=find_packages(),
cmdclass={'build_py': build_py},
)
distutils
- 符合以下解决方案。它还可以通过通配符匹配排除多个模块,例如
exclude = ['src.file*']
file
开头的模块在
src
包裹,或
exclude = ['*.file1']
file1.py
在所有包中。
setuptools
可以排除包(包含
__init__.py
文件的目录),但需要进行一些重构。创建
package_to_exclude
, 把
file_to_exclude.py
在那里并修复所有最终的导入错误:
project
├── setup.py
└── src
├── __init__.py
├── file1.py
├── file2.py
└── package_to_exclude
├── __init__.py
└── file_to_exclude.py
package_to_exclude
在设置脚本中:
from setuptools import find_packages, setup
setup(
...,
packages=find_packages(exclude=['src.package_to_exclude'])
)
py_modules
添加要包含的模块
src
打包并添加
src
中的所有模块除了
file_to_exclude
在
py_modules
.例子:
import os
from setuptools import find_packages, setup
excluded_files = ['file_to_exclude.py']
included_modules = ['src.' + os.path.splitext(f)[0]
for f in os.listdir('src')
if f not in excluded_files]
setup(
...,
packages=find_packages(exclude=['src']),
py_modules=included_modules,
)
关于setuptools - 从 python bdist_egg 或 bdist_wheel 中排除单个源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50506072/
我有一个 Pylons 应用程序,我已准备好首次将其部署到生产环境中。它在 setup.py 中列出了一组简单的要求: install_requires=[ "Pylons>=1.0",
我在运行: Ubuntu 13.04 python 2.7.4 我正在尝试这个 very simple tutorial关于制作 python 蛋,但是当我实际尝试运行命令制作蛋时遇到困难。
我正在尝试编译 *.pyx 文件。它使用同一目录中 __init__.py 内的一些定义和常量。项目结构为: setup.py Foo/__init__.py Foo/Foo.pyx 设置命令如下:
我正在尝试为 Django 应用程序构建一个包,但不包括所有测试模块。我试过设置 exclude = ["*.tests", "*.tests.*", "tests.*", "tests"] 在 fi
背景:我有一个负责安全的源文件。里面有魔术键和特定的算法。 是否可以从 python egg 或 wheel 包中删除这个单一的源文件? 我已经完成了使用 egg 命令只发送二进制文件。 python
我对 python 打包有一个令人困惑的问题 我有一个如下所示的 setup.py: import os try: from setuptools import setup except Im
我是一名优秀的程序员,十分优秀!