在没有 Internet连接的情况下安装MySQLDb(Python模块)
大家好,
我需要在SLES 11开发服务器上安装MySQLDb。由于企业防火墙策略,此Dev Server无法访问公共Internet。我假设这只会是一种麻烦,会迫使我对更容易安装的东西进行源安装等。相反,在尝试最终安装并运行MySQL支持的Django时,我遇到了障碍。
我已经下载并解压缩了MySQL-python-1.2.4,我正在尝试运行它的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
下载并安装了当前版本的sudo python setup.py build install
模块(0.7.3)。我认为这会使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中相当平庸)。
谢谢大家, 豆
答案 0 :(得分:1)
git clone https://github.com/PyMySQL/PyMySQL or download tarball.
for mysqldb:https://github.com/farcepest/MySQLdb1
untar it
run sudo python setup.py install
就是这样。
答案 1 :(得分:1)
猜猜为时已晚,但为了未来的googlers ......
我遇到了同样的问题。为了解决这个问题,我不得不评论这些方面:
if not hasattr(pkg_resources, '_distribute'):
if not no_fake:
_fake_setuptools()
raise ImportError
在此之后,我可以通过python setup.py install
安装MySQL-python。
答案 2 :(得分:1)
这个问题的答案似乎取决于版本。 MySQLDb版本1.2.5(撰写本文时的最新版本)以及之后不需要分发,因此python setup.py install
将起作用。版本1.2.5于2014年1月发布,所以这个问题就是那么久了。