我正在使用pip并尝试安装一个名为pyodbc的python模块,该模块对非Python库(例如unixodbc-dev,unixodbc-bin,unixodbc)具有某些依赖性。目前,我只能在玩游戏,因此无法在整个系统上安装这些依赖项,因此我将它们安装在非标准位置。如何告诉pip在哪里寻找这些依赖项?更确切地说,如何在构建pyodbc扩展时通过包含dirs(gcc -I)和库dirs(gcc -L -l)的点传递信息?
Answers:
点有一个--global-option
标志
您可以使用它向传递其他标志build_ext
。
例如,添加--library-dirs(-L)标志:
pip install --global-option=build_ext --global-option="-L/path/to/local" pyodbc
gcc还支持环境变量:http : //gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html
我找不到任何build_ext文档,因此这是命令行帮助
Options for 'build_ext' command:
--build-lib (-b) directory for compiled extension modules
--build-temp (-t) directory for temporary files (build by-products)
--plat-name (-p) platform name to cross-compile for, if supported
(default: linux-x86_64)
--inplace (-i) ignore build-lib and put compiled extensions into the
source directory alongside your pure Python modules
--include-dirs (-I) list of directories to search for header files
(separated by ':')
--define (-D) C preprocessor macros to define
--undef (-U) C preprocessor macros to undefine
--libraries (-l) external C libraries to link with
--library-dirs (-L) directories to search for external C libraries
(separated by ':')
--rpath (-R) directories to search for shared C libraries at runtime
--link-objects (-O) extra explicit link objects to include in the link
--debug (-g) compile/link with debugging information
--force (-f) forcibly build everything (ignore file timestamps)
--compiler (-c) specify the compiler type
--swig-cpp make SWIG create C++ files (default is C)
--swig-opts list of SWIG command line options
--swig path to the SWIG executable
--user add user include, library and rpath
--help-compiler list available compilers
--install-option
也可以代替--global-option
指定库的路径。我不确定何时应该使用一个而不是另一个。也许--install-option
只适用于安装并且--global-option
范围更广。另请参见pip.pypa.io/en/stable/reference/pip_install/…–
仅供参考...如果您在使用pip安装软件包时遇到问题,则可以使用
--no-clean
选项以查看到底发生了什么(即,为什么构建不起作用)。例如,如果numpy安装不正确,则可以尝试
pip install --no-clean numpy
然后查看“临时”文件夹以查看构建的内容。在Windows机器上,它应位于以下位置:
C:\Users\Bob\AppData\Local\Temp\pip_build_Bob\numpy
请注意,--no-clean选项尝试安装软件包,但不会自行清除,让您了解pip尝试执行的操作。
否则,如果您只想下载源代码,那么我将使用该-d
标志。例如,要将Numpy源代码.tar
文件下载到当前目录,请使用:
pip install -d %cd% numpy
Thorfin的回答也帮助了我。我在Windows上构建GTK3 +并安装pygobject时,在如何使用pip install包含多个文件夹时遇到了困难。
我尝试根据pip文档创建pip配置文件。但失败了。一种方法是使用命令行:
pip install --global-option=build_ext --global-option="-IlistOfDirectories"
# and/or with: --global-option="-LlistofDirectories"
Windows中与多个文件夹一起使用的分隔符为“;” 分号,而不是冒号':',在其他操作系统中可能有所不同。
示例工作命令行:
pip install --global-option=build_ext --global-option="-Ic:/gtk-build/gtk/x64/release/include;d:/gtk-build/gtk/x64/release/include/gobject-introspection-1.0" --global-option="-Lc:\gtk-build\gtk\x64\release\lib" pygobject==3.27.1
您可以使用''或'/'作为路径,但请确保不要在“
这下面将失败,因为双引号旁边有反斜杠
pip install --global-option=build_ext --global-option="-Ic:\willFail\" --global-option="-Lc:\willFail\" pygobject==3.27.1
您曾经使用过virtualenv吗?它是Python软件包,可让您在一台计算机上创建和维护多个隔离的环境。每个人可以使用彼此独立的不同模块,而无需搞乱系统库或单独的虚拟环境中的依赖关系。
如果您没有root特权,则可以从源代码下载并使用virtualenv软件包:
$ curl -O https://pypi.python.org/packages/source/v/virtualenv/virtualenv-X.X.tar.gz
$ tar xvfz virtualenv-X.X.tar.gz
$ cd virtualenv-X.X
$ python virtualenv.py myVE
这个周末我在Ubuntu Server 12.0.4上执行了上述步骤,并且运行良好。默认情况下,您创建的每个新虚拟环境均随附PIP,因此轻松将软件包安装到新环境中。
以防万一它对某人有所帮助,我仍然找不到通过pip做到这一点的方法,因此最终只是下载了软件包并通过其“ setup.py”进行了操作。也切换到了似乎更易于安装的API,称为“ pymssql”。
python setup.py build_ext --rpath=/usr/local/lib
吗?
--user
选件?