在没有C ++编译器的情况下安装python软件包

时间:2020-01-06 17:34:25

标签: python c++ pip conda python-wheel

我正在尝试使HDBSCAN程序包在没有C ++编译器的Windows 7计算机上运行。不幸的是,安装编译器不是一种选择。 我读到一些软件包已经预编译了wheel文件,不需要安装任何编译器。 installation notes状态“由于赖安·海林斯基(Ryan Helinski)的工作,可用于多个平台的二进制车轮”。但是,没有提及在哪里可以找到这些文件。我的问题是:

  1. 如何获取HDBSCAN软件包的.whl文件?
  2. 是否可以简单地在另一台计算机上编译+安装并复制它?如果是这样,我在其上编译的计算机应与必须在其上运行代码的计算机有何共同之处?我可以在Windows 10机器上执行此操作,还是必须同时在Win7上执行,是否需要在两者上运行相同的Windows更新,等等?

4 个答案:

答案 0 :(得分:2)

该项目的维护者自己没有在PyPI上发布预先构建的 wheel 发行版。

正如其他贡献者已经提到的那样,人们可以从诸如Christoph Gohlke's "Unofficial Windows Binaries for Python Extension Packages"之类的第三方获得这样的 wheel 分配。

当然也可以在一台机器上自己构建这样的轮子,然后在另一台机器上重复使用。据我所知,在Windows中,两台机器都必须具有相同的Python解释器(次要)版本和相同的 bitness (均为32位或全部为64位)。操作系统的确切版本无关紧要(从Windows 10到Windows 7或其他方法都可以使用)。

答案 1 :(得分:1)

我最终通过在另一台计算机上进行编译并从中复制软件包来使其工作。至关重要的一点是,两台计算机上所需的软件包具有相同的版本,因此我只需设置一个新的conda环境,使其与目标计算机具有相同的软件包版本,然后在其中安装pip并安装hdbscan并进行复制。 我担心Windows版本的兼容性,但这即使我安装在Windows 10上并移至运行Win7的计算机上也能正常工作。

答案 2 :(得分:0)

这是您可以下载转轮文件的网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 对于python 3.5> 或PyPi(旧版本)

  • 运行python -m pip安装为您的pythonversion.whl下载的文件

对于第二个问题,是的,您可以但是很复杂,应尽可能避免使用它:)

答案 3 :(得分:-1)

我刚刚检查了一下。 Python 3.8用C编码。您需要一个C编译器,而不是C ++编译器。 MINGW是一个,而TinyCC Win32是另一个(很小的一个,生成速度很慢的可执行文件)。还可以查看this list的免费C或C ++编译器。

一种可能性(可能需要花费几天的时间)可能是使用某些WSL或某些Linux模拟器,例如JSLinux(在Web浏览器中运行)。然后,您可以(痛苦地)构建一个交叉编译器(首先以tinycc-win32开始,然后编译旧的交叉GCC 3编译器,然后使用较新的C ++ GCC进行编译,等等。)< / p>

但是现实是您不应被允许这样做。您的真正问题不是技术性的:为什么不允许安装然后使用C ++编译器,例如MinGW?获得许可(和资源)以安装一些...。

或者,考虑安装一些Linux distribution(确保允许您这样做)。他们大多数人都拥有最新的Python和GCC ...

是否可以简单地在另一台计算机上编译+安装并复制它?

这称为cross-compilation,通常是可能的。关键是要这样做。您应该根据自己的情况找到相关的交叉编译器。

如果被允许,您甚至可以使用实时Linux USB记忆棒...。

某些C编译器written in Python确实存在...。您可以使用它们交叉编译tinycc for Win32。然后,您应该具有Win32的C编译器。然后,您可以编译旧的GCC,等等。...Qemu适用于Windows。您可以在Qemu中使用带有跨GCC编译器的Linux。