【问题标题】:how do i control to which python to install a package我如何控制安装包的python
【发布时间】:2015-05-22 02:47:46
【问题描述】:

我在 win7/64 上,并且已经有一些 python,但想将 mosek 安装到新的 WinPython

>where python
C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python.exe
C:\Python27\python.exe
C:\Program Files (x86)\LilyPond\usr\bin\python.exe

我正在关注these instructions

>cd C:\Program Files\Mosek\7\tools\platform\win64x86\python\2

>python setup.py build --build-base c:\Users\nlab install --user
running build
running build_py
creating c:\Users\nlab\lib
creating c:\Users\nlab\lib\mosek
copying mosek\array.py -> c:\Users\nlab\lib\mosek
copying mosek\__init__.py -> c:\Users\nlab\lib\mosek
creating c:\Users\nlab\lib\mosek\fusion
copying mosek\fusion\SolverInfo.py -> c:\Users\nlab\lib\mosek\fusion
copying mosek\fusion\Utils.py -> c:\Users\nlab\lib\mosek\fusion
copying mosek\fusion\__init__.py -> c:\Users\nlab\lib\mosek\fusion
running install
running install_lib
creating C:\Users\nlab\AppData\Roaming\Python
creating C:\Users\nlab\AppData\Roaming\Python\Python27
creating C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages
creating C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
copying c:\Users\nlab\lib\mosek\array.py -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
creating C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\fusion
copying c:\Users\nlab\lib\mosek\fusion\SolverInfo.py -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\fusion
copying c:\Users\nlab\lib\mosek\fusion\Utils.py -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\fusion
copying c:\Users\nlab\lib\mosek\fusion\__init__.py -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\fusion
copying c:\Users\nlab\lib\mosek\__init__.py -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
byte-compiling C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\array.py to array.pyc
byte-compiling C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\fusion\SolverInfo.py to SolverInfo.pyc
byte-compiling C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\fusion\Utils.py to Utils.pyc
byte-compiling C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\fusion\__init__.py to __init__.pyc
byte-compiling C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\__init__.py to __init__.pyc
running install_data
copying C:\Program Files\Mosek\7\tools\platform\win64x86\python\2\..\..\bin\mosek64_7_1.dll -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
copying C:\Program Files\Mosek\7\tools\platform\win64x86\python\2\..\..\bin\mosekglb64_7_1.dll -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
copying C:\Program Files\Mosek\7\tools\platform\win64x86\python\2\..\..\bin\mosekxx7_1.dll -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
copying C:\Program Files\Mosek\7\tools\platform\win64x86\python\2\..\..\bin\libiomp5md.dll -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
copying C:\Program Files\Mosek\7\tools\platform\win64x86\python\2\..\..\..\..\..\license.pdf -> C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek
running install_egg_info
Writing C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\Mosek-7.1.31-py2.7.egg-info
Please review the MOSEK license conditions in license.pdf

创造和使用 C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\ 但我想要 C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\Lib\site-packages\

我尝试显式使用 WinPython 的 exe:

>C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python.exe setup.py build --build-base c:\Users\nlab install --user
running build
running build_py
running install
running install_lib
running install_data
running install_egg_info
Removing C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\Mosek-7.1.31-py2.7.egg-info
Writing C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\Mosek-7.1.31-py2.7.egg-info
Please review the MOSEK license conditions in license.pdf

但这似乎没有帮助

【问题讨论】:

  • 当前:>set PYTHONPATH 提供PYTHONPATH=
  • python -c "__import__("""mosek""").Env()" C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python.exe -c "__import__("""mosek""").Env()" 输出什么?
  • C:\Users\nlab>python -c "__import__("""mosek""").Env()" 给了Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\Users\nlab\AppData\Roaming\Python\Python27\site-packages\mosek\__init __.py", line 639, in <module> raise ImportError('Failed to import dll "%s"' % __libname) ImportError: Failed to import dll "mosekxx7_1.dll"C:\Users\nlab>C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64 \python.exe -c "__import__("""mosek""").Env()" 没有返回任何东西?
  • 所以第二个命令没有输出?
  • 你能用C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python.exe打开一个python终端然后运行import sys然后sys.prefix看看打印什么?

标签: python setuptools distutils setup.py mosek


【解决方案1】:

我相信是您的setup.py 选项导致了错误。具体来说,user 选项将安装到链接到您的用户配置文件的特定目录中

https://docs.python.org/2/install/#alternate-installation-the-user-scheme

,无论什么链接到 WinPython。这适用于在系统目录中没有写入权限的用户。如果您想将安装链接到您的 WinPython,请运行

C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\python.exe setup.py install

如果您想确保它安装在正确的位置,请使用 --prefix 选项

https://docs.python.org/2/install/#alternate-installation-windows-the-prefix-scheme

例如

python.exe setup.py install --prefix="C:\Users\nlab\Downloads\WinPython-64bit-2.7.9.5\python-2.7.9.amd64\"

...但这不是必需的,因为这只是与此特定 WinPython 关联的默认前缀。

【讨论】:

  • 有没有办法从 python 控制台中的 setup.py 安装(并指定选项)?我不需要--build-base 吗?这也适用于权限有限的用户吗?
  • 我认为这在您的系统上不是必需的(请参阅docs.python.org/2/install/#splitting-the-job-up),但--build-base 似乎对权限有限的用户有用。而且我不会尝试使用 python 控制台安装到包中(您可能可以使用os.systemsubprocess 模块,但我不会打扰。我认为最好从 DOS 终端执行此操作或使用包管理器
猜你喜欢
  • 2016-04-06
  • 2014-08-09
  • 2015-05-13
  • 2013-02-22
  • 1970-01-01
  • 2021-07-07
  • 2011-02-01
  • 2022-11-23
  • 1970-01-01
相关资源
最近更新 更多