3

在没有Internet 连接的情况下安装 MySQLDb(Python 模块)

大家好,

我需要在 SLES 11 开发服务器上安装 MySQLDb。由于公司防火墙政策,此开发服务器无法访问公共互联网。我假设这只是一种麻烦,它会迫使我在其他更容易安装的东西上进行源安装等。相反,在我尝试最终安装和运行支持 MySQL 的 Django 时,我碰壁了。

我已经下载并解压了 MySQL-python-1.2.4,我正在尝试运行它的 setup.py。但是,任何运行 setup.py 的尝试,甚至只是运行 setup.py,sudo python setup.py --help都会导致以下结果

Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.28.tar.gz

然后当然下载失败。

我下载并安装了当前版本的distribute模块(0.7.3),通过sudo python setup.py build install. 我认为这会阻止 mysql-python 的 setup.py 尝试下载distribute. 但这似乎无关紧要。我确实快速查看了 mysql-client 的 setup.py 以查看强制下载的位置。它的 setup.py 似乎是这样做的:

from distribute_setup import use_setuptools
use_setuptools()

这称为:

def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
                   to_dir=os.curdir, download_delay=15, no_fake=True):
    # making sure we use the absolute path
    to_dir = os.path.abspath(to_dir)
    was_imported = 'pkg_resources' in sys.modules or \
        'setuptools' in sys.modules
    try:
        try:
            import pkg_resources
            if not hasattr(pkg_resources, '_distribute'):
                if not no_fake:
                    _fake_setuptools()
                raise ImportError
        except ImportError:
            return _do_download(version, download_base, to_dir, download_delay)

而这,pkg_resources 的导入失败(我已经从命令行复制了这个);并且异常处理程序尝试下载,这当然会失败。

我的理解是distribute无论如何都已弃用,而setuptools应该使用它。我确实setuptools安装了;但是 mysqldb 模块是硬编码的distribute,并且可能是特定版本的distribute,这是我的问题吗?老实说,在这一点上,我对 Python 中的模块、依赖项等有点困惑(我在 Python 方面相当平庸)。

谢谢大家,豆

4

3 回答 3

1

这个问题的答案似乎取决于版本。MySQLDb版本 1.2.5(撰写本文时的最新版本)及更高版本不需要分发,因此python setup.py install可以使用。版本 1.2.5 于 01/2014 发布,所以这个问题就这么老了。

于 2014-08-11T02:23:39.333 回答
1
  1. git clone https://github.com/PyMySQL/PyMySQL or download tarball.对于 mysqldb:https://github.com/farcepest/MySQLdb1
  2. untar it
  3. run sudo python setup.py install

就这样。

于 2013-11-11T17:27:23.957 回答
1

估计为时已晚,但为了未来的谷歌人......

我有同样的问题。为了解决它,我不得不评论这些行:

if not hasattr(pkg_resources, '_distribute'):
            if not no_fake:
                _fake_setuptools()
            raise ImportError

在此之后,我能够通过python setup.py install.

于 2014-01-04T04:30:10.600 回答