2013-09-26

如何搭建本地pypi服务器

如果是建pypi镜像,直接用pypimirror就行了。但这次是要提供一些经过检查的包(可能有C语言扩展,需要人工检查确保没有安全问题)供内网机器用easy_install安装。

1. 生成安装包
解开源码包,运行:
python setup.py bdist_egg
在dist目录下会生成egg。

有的库会报错,因为zip_safe是在setuptools里定义的,而库的setup.py里写的还是distutils,将from distutils.core import setup改成from setuptools import setup即可。

2. 提供服务
https://pypi.python.org/pypi/pypiserver 用起来最简单,下载一个文件就行:
wget --no-check-certificate https://raw.github.com/schmir/pypiserver/standalone/pypi-server-standalone.py

把上一步生成的egg都放到某个目录里,比如/root/pypi/packages,然后启动服务:
python pypi-server-standalone.py --disable-fallback --server twisted --root /root/pypi/packages --port 4321
--disable-fallback 表示本地缺包时不转到官方的pypi;
--server 指定使用twisted提供服务,因为我先前刚好装过,否则还得装waitress。

访问 http://server:4321/ 就能看到介绍了。

3. 使用
在~/.pydistutils.cfg中加入:
[easy_install]
index-url = http://server:4321/simple/

安装时使用:
/opt/apps/python/bin/easy_install package_name

如果在package_name的位置写url,就不用改配置文件。

2013-09-11

为什么emacs找不到java

从emacs的shell里运行java时,总是显示“'java' 不是内部或外部命令,也不是可运行的程序或批处理文件。”
原因:被WoW64把对C:\Windows\System32的访问重定向到C:\Windows\SysWOW64了。

一开始没往这方面想,比较shell里和cmd中的环境变量发现不一致了才想起来。一搜才发现半年前就有人问过了