我有一个名为"example"的库,我将其安装到我的全局site-packages目录中.但是,我希望能够安装两个版本,一个用于生产,一个用于测试(我有一个Web应用程序和其他以这种方式版本化的东西).
有没有办法指定,比如"python setup.py stage",它不仅会将不同的蛋安装到site-packages中,还会将模块从"example"重命名为"example_stage"或类似的东西?
如果distutils无法做到这一点,还有其他工具吗?
我正在使用pip 1.4.1,尝试从本地路径安装包,例如:
pip install /path/to/my/local/package
Run Code Online (Sandbox Code Playgroud)
这就是我想要的,这或多或少等同于运行python /path/to/my/local/package/setup.py install
,但我想将一些额外的选项/参数传递给我的软件包的setup.py install.
我从pip文档中了解到,这可以通过--install-option
选项实现,例如:
pip install --install-option="--some-option" /path/to/my/local/package
Run Code Online (Sandbox Code Playgroud)
来自python-virtualenv谷歌集团的这篇文章表明这是可能的.
我不明白的是如何从setup.py中获取传入的"--some-option".我试着看sys.argv
,但无论我为"--install-option ="投入什么,sys.argv
总是如此:
['-c', 'egg_info', '--egg-base', 'pip-egg-info']
Run Code Online (Sandbox Code Playgroud)
如何从pip install中获取作为"--install-option"传入的内容的值?
modules = [Extension("MyLibrary",
src,
language = "c++",
extra_compile_args=["-fopenmp", "-std=c++11", "-DNOLOG4CXX"], # log4cxx is not currently used
extra_link_args=["-fopenmp", "-std=c++11"],
include_dirs=[os.path.join(os.path.expanduser("~"), (os.path.join(gtest, "include"))],
library_dirs=[log4cxx_library, os.path.join(os.path.expanduser("~"), gtest)],
libraries=["log4cxx", "gtest"])]
Run Code Online (Sandbox Code Playgroud)
这是我的setup.py脚本的一部分.如何通过命令行参数传递include_dirs或library_dirs等选项,以便用户可以设置路径?
我是python上的setuptools的新手。
我在install_requires列表中添加了一个包'numpy'和'tensorflow'并运行python setup.py install。由于SSL问题,它无法安装。对于基于https的网址,我们使用自签名SSL。
如果是单个软件包的点子,我可以使用--cert选项。据我所知setuptools间接使用pip。如果是这样,是否在运行setup.py时强制其使用--cert选项?
我正在编写一个带有可安装子包的 python 包,如下所示。
\n\nmy_project\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subpackage1\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 subpackage2\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bar.py\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 setup.py [main]\n
Run Code Online (Sandbox Code Playgroud)\n\n我的 setup.py 如下所示:
\n\nfrom setuptools import setup, find_packages\nfrom setuptools.command.install import install\n\n# new install class\nclass InstallCommand(install):\n # pass argument subpackage from pip install to setup.py\n user_options = install.user_options + [\n (\'subpackage=\', None, None), \n ]\n\n def initialize_options(self):\n install.initialize_options(self)\n self.subpackage = None\n\n def finalize_options(self):\n install.finalize_options(self)\n\n def run(self):\n\n if self.subpackage is None:\n # install all sub-packages\n subpackages = [\'my_project.\'+x for x in find_packages(\'./my_project\', exclude=[\'*.tests\', …
Run Code Online (Sandbox Code Playgroud) 我目前正在处理一个导入 Fortran 模块的 Python 项目。在setup.py
相似的外观
from numpy.distutils.core import Extension
from numpy.distutils.core import setup
ext = Extension(
name = "fortran_module",
sources = ["fortran_module.f90"],
extra_f90_compile_args = ["-some -compile -arguments"]
)
setup(
...,
...,
...,
ext_modules = [ext],
...,
...,
...
)
Run Code Online (Sandbox Code Playgroud)
我目前正在安装它pip install -e .
,它工作正常。但有时我需要更改extra_f90_compile_args
,我想在安装过程中将它们作为命令行参数提供,pip
而不是更改setup.py
文件。例如这样的事情:
pip install -e --compile_args="-O3 -fbacktrace -fbounds-check -fopenmp" .
Run Code Online (Sandbox Code Playgroud)
是否可以将命令行参数传递pip
到setup.py
文件中?
与此相关,我还想将不同的设置选项传递到setup.py
. 例如
pip install -e --setup=setup1 .
Run Code Online (Sandbox Code Playgroud)
或者
pip install -e --setup=setup2 …
Run Code Online (Sandbox Code Playgroud) python ×6
setup.py ×3
setuptools ×3
distutils ×2
pip ×2
dependencies ×1
deployment ×1
namespaces ×1
python-3.3 ×1
ssl ×1