标签: python

在 RedHat/Centos 上安装 Python 2.5

当前的 Python 版本是 2.4 ...

yum upgrade python
Run Code Online (Sandbox Code Playgroud)

Could not find update match for python
Run Code Online (Sandbox Code Playgroud)

我必须从源代码安装吗?

redhat python

8
推荐指数
2
解决办法
2万
查看次数

如何在linux中更改simplehttpserver上的端口?

如何在linux中的simplehttpserver上从8000更改端口?

linux http python tcp

8
推荐指数
1
解决办法
9772
查看次数

Python/Django/WSGI/Apache - “ImportError: No module named site”

我正在尝试在我的本地 ubuntu 机器上使用 django 应用程序。但是,该站点无法正常工作,并且我的站点中/var/log/apache2/errors.log充满了如下消息:

ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

我的/var/log/apache2/error.log(今天)看起来像这样:

$ cat error.log | uniq -c
      1 [Wed Jun 29 09:37:37 2011] [notice] Apache/2.2.17 (Ubuntu) mod_wsgi/3.3 Python/2.7.1+ configured -- resuming normal operations
  12966 ImportError: No module named site
Run Code Online (Sandbox Code Playgroud)

这是当我打开机器时它启动的通知,然后是 12,966 行都在说no module named site消息

请注意缺少日期时间字段。即使不访问网站(即,即使不发出网络请求),也会重复这些错误。在浏览器中访问网站时,它只是挂起,好像在等待大量下载。

设置

Apache 模块

我正在使用 python 2.5 virtualenv,其中安装了很多包(包括 django 1.1)和 pip。我已经加载了 mod_wsgi:

$ ls -l /etc/apache2/mods-enabled/wsgi*
lrwxrwxrwx 1 root root 27 2010-10-04 16:50 /etc/apache2/mods-enabled/wsgi.conf -> ../mods-available/wsgi.conf
lrwxrwxrwx 1 root …
Run Code Online (Sandbox Code Playgroud)

python django wsgi mod-wsgi apache-2.2

8
推荐指数
1
解决办法
4万
查看次数

FreeRADIUS 2 应该使用与默认不同的 Python

我们在 CentOS 5.7 服务器上安装了 FreeRADIUS 2 守护进程。

我们想使用预先编写的 Python 模块来进行授权,但有一个问题:我们拥有的 Python 模块需要Python 2.6或更高版本,但 CentOS 附带的 Python 是Python 2.4

现在,服务器管理员已经在一个单独的文件夹中安装了 Python 2.6,/usr/lib/Python2.6所以我们可以从那里运行 Python 2.6。但是,/usr/bin/python仍然是 Python 2.4。显然,替换默认的 Python 2.4 会导致各种问题。

有什么方法可以强制使用 FreeRADIUS/usr/lib/Python2.6而不是默认的 2.4 来定位和运行模块吗?

python centos5 freeradius2

8
推荐指数
1
解决办法
631
查看次数

错误 2006:MySQL 服务器已消失

我正在使用 uWSGI 和 nginx 在 CentOS 服务器上运行 Python Pyramid 应用程序。我使用 SQLAlchemy 作为 ORM,使用 MySQLdb 作为 API,使用 MySQL 作为数据库。该网站还没有上线,所以唯一的流量是我和公司的其他一些员工。我们购买了一些数据来填充数据库,因此最大(也是最常查询)的表是 ~150,000 行。

昨天我快速连续打开了网站的四个新标签,我收到了几个 502 Bad Gateway 错误。我查看了 uWSGI 日志,发现以下内容:

sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away') 'SELECT ge...
Run Code Online (Sandbox Code Playgroud)

重要说明: 此错误不是由 MySQL 的 wait_timeout 引起的。去过也做过。

我想知道这个问题是否是由同时提供并发请求引起的。我让自己成为一个穷人的负载测试员:

for i in {1..10}; do (curl -o /dev/null http://domain.com &); done;
Run Code Online (Sandbox Code Playgroud)

果然,在这十个请求中,至少有一个会抛出 2006 错误,通常更多。有时错误会变得更奇怪,例如:

sqlalchemy.exc.NoSuchColumnError: "Could not locate column in row for column 'table.id'"
Run Code Online (Sandbox Code Playgroud)

当该列绝对存在并且在所有其他相同请求上工作正常时。或者,这个:

sqlalchemy.exc.ResourceClosedError: This result object does not return rows. It has been …
Run Code Online (Sandbox Code Playgroud)

mysql python uwsgi

8
推荐指数
1
解决办法
1万
查看次数

Active Directory 2012 LDAP 集成服务主体名称条目正在消失?

创建 Python 服务来查询 AD 属性

我正在使用 Python-LDAP over SASL(DIGEST-MD5) 将我们的 AD 与在 Linux 上运行 Python 的 Web 服务集成,以查询 AD 2012 用户属性(部门、部门、电话分机、电子邮件等)。在针对 AD 2003 解决特定于我的服务的问题后,我开始遇到针对我们的新 AD 2012 的 SPN 错误,即摘要 uri 与服务器上的任何 SPN 都不匹配。我已经交叉引用了两台服务器的 SPN 列表,它们包含彼此相同的类似物。

错误:摘要 uri 与为此服务器注册的任何 LDAP SPN 都不匹配

修复?

这是通过运行修复的:

setspn -A ldap/<Domain_Name> <Computer_Name>
Run Code Online (Sandbox Code Playgroud)

请注意,即使运行以下命令,创建服务帐户也无法修复我的 SPN 错误:

setspn -A ldap/<Domain_Name> <Domain_Name>/<Service_Account_Name>
Run Code Online (Sandbox Code Playgroud)

simple_bind_s() 不需要 SPN,sasl_interactive_bind_s() 需要 SPN

仅使用 sasl_interactive_bind_s() 将 SPN 添加到本地机器 SPN 列表才适用于我的 Python-LDAP 服务。我还应该注意,如果我使用 simple_bind_s() 可以跳过 SPN 步骤,但此方法以明文形式发送凭据,这是不可接受的。

但是我注意到该记录只在 SPN 列表上停留了大约一分钟然后消失了?运行 setspn 命令时没有错误,事件日志完全为空,任何地方都没有重复项,在基本 dn 上使用 -F …

active-directory python ldap spn

8
推荐指数
1
解决办法
5370
查看次数

从标准输入解压缩到标准输出 - funzip,python

目标是从 stdin 读取 zip 文件并解压缩到 stdout。

Funzip 有效并且是我正在寻找的解决方案,zip 包含一个文件,不幸的是,当压缩文件大小约为 1GB 或更大时,funzip 会失败:

funzip error: invalid compressed data--length error
Run Code Online (Sandbox Code Playgroud)

更新:我发现上述错误可能并不表示实际错误。比较两个未压缩的文件,一个是传统解压缩,另一个是通过管道使用 funzip(将上述错误写入 stderr),这些文件是相同的。我想保持这个开放,所以这可以被确认或报告。

使用python的相关解决方案: 解压缩通过管道飞入的文件

然而,这个输出被定向到一个文件。

linux compression python bash pipe

8
推荐指数
3
解决办法
2万
查看次数

pip install 似乎忽略了依赖链接

我有一个依赖于多个包的 Python 应用程序。不幸的是,其中一个包不在 PyPi 中,所以我必须直接从 git 存储库安装它。

我一直在尝试将它添加到我的 setup.py 中,如下所示:

setup(
..,
..,
dependency_links = [
                 'https://github.com/marcuz/libpynexmo.git#egg=nexmomessage'
    ],
install_requires=[
    ..,
    'nexmomessage'
],
packages=['localpackage']
Run Code Online (Sandbox Code Playgroud)

但是它失败了:根本没有找到 nexmomessage 的发行版

我看到它在哪里创建依赖链接列表:将dependency_links 写入common.egg-info/dependency_links.txt - 当我查看该文件时,URL 是正确的。

如果我在命令行运行它: pip install -e git+ https://github.com/marcuz/libpynexmo.git#egg=nexmomessage

它安装没有问题。

想法?

python pip

7
推荐指数
1
解决办法
8208
查看次数

从网络连接读取时进程无限期挂起

对以下内容的更新:

我在不同数据中心的 Debian 虚拟机上的不相关脚本上遇到了类似的问题。

这看起来很像这里描述的问题(就像问这个问题的人一样,我没有在服务器前配置代理)。

与以下描述的主要区别在于,当我附加到挂起的进程时,我看到的是对recvfrom而不是的调用read

$ strace -p 17527
Process 17527 attached - interrupt to quit
recvfrom(3, 
Run Code Online (Sandbox Code Playgroud)

然而,Python 并没有任何被代理的印象:

>>> import os; print os.getenv("HTTP_PROXY"), os.getenv("http_proxy")
None, None
Run Code Online (Sandbox Code Playgroud)

所以我还是很难过。可悲的是,链接的问题也没有最终答案。

(我也想知道这个问题是否相关,但 S3 似乎不太可能不尊重Connection: close标题。)


我有几个 Debian(Wheezy、x86_64)服务器都表现出以下行为:

所有服务器都有一组 cron 作业,其中包括从 S3 中提取数据。这些通常运行良好,但偶尔会ps aux显示一些小时或几天前开始的作业仍在运行,并且没有完全完成。

通过strace -p <pid>显示检查它们,在所有情况下,该进程都挂在读取命令上。比如我刚才查的一个进程的输出是:

$ strace -p 12089
Process 12089 attached - interrupt to quit
read(5, 
Run Code Online (Sandbox Code Playgroud)

检查打开的文件描述符给了我这个:

$ sudo lsof -i | grep 12089
python  12089 …
Run Code Online (Sandbox Code Playgroud)

linux python svn mac-osx

7
推荐指数
1
解决办法
8124
查看次数

在构建服务器上使用缓存构建 Docker 映像?

我们有一个 Jenkins CI 服务器,它从 Git 获取我们的代码,构建它,制作一个 Docker 镜像,然后将它发送到一些生产服务器。

我们的项目主要是用 Python 编写的,所以“构建”涉及运行

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

效果很好,只是有点慢。它必须通过网络获取包,另外还必须为其中一些构建 C 库(而且“lxml”并不小!)。

在开发中,我已经成功地pip-accel用来加速这个过程。它具有相同的接口,pip但它同时缓存 Python 下载和构建的 C 代码,所以

pip-accel install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

很快。

我想为我们的生产版本这样做,但我遇到了一些障碍。

显然,pip-accel需要一个目录来存储缓存。因为我们的 CI 服务器是运行构建的地方,所以这是放置它的合乎逻辑的地方。但是该pip install命令在一个新的 Docker 容器中运行,因此它不能只访问该服务器上的公共目录。

Docker“卷”似乎是为与容器共享目录而设计的,但我们的构建发生在内部(令人惊讶)docker build,并且只docker run允许您附加卷。您不能使用docker build.

有什么我想念的吗?如何在我docker build所在的容器之外运行并与我的主机共享缓存文件夹?

deployment python build-server pip docker

7
推荐指数
1
解决办法
1314
查看次数