PypiWeb描述

pypiweb的Python项目详细描述


它是pypi服务器的一个分支(https://github.com/pypiserver/pypiserver

添加接口pypi web:http//<;my ip>;/pypi并添加管理模板

对于安装,使用:https://github.com/pypiserver/pypiserver并替换pypi server命令 通过PypiWeb

安装

pip install pypiweb

git clone https://github.com/fraoustin/pypiweb.git
cd pypiweb
python setup.py install

远程从源上载包

而不是直接将包复制到服务器的文件夹中, 您还可以使用python setup.py upload命令远程上载它们。 目前只支持密码保护的上传!

  1. 首先确保安装了passlib模块, 解析由指定的apachehtpasswd文件所需的 -p密码选项(请参阅下一步):

    pip install passlib
    
  2. 使用至少一个用户/密码对创建apachehtpasswd文件 使用此命令(系统将提示您输入密码):

    htpasswd -sc .htaccess <some_username>
    

    提示

    请阅读此问题,以便在windows下运行htpasswdcmd:

    http://serverfault.com/questions/152950/how-to-create-and-edit-htaccess-and-htpasswd-locally-on-my-computer-and-then-u

    或者如果你有内部服务的假密码,你可以使用这个 公共服务:

    http://www.htaccesstools.com/htpasswd-generator/

    即使上传也可以禁用身份验证。 要避免懒惰的安全决策,请阅读-P-a选项的帮助。

  3. 您只需使用-p选项重新启动服务器一次 (但用户/密码对稍后可以动态添加或更新):

    ./pypiweb -p 8080 -P .htaccess ~/packages &
    
  4. 您需要更改模板:

    ./pypiweb -p 8080 -P .htaccess --add-template mytemplatedir ~/packages &
    
  5. 在客户端,编辑或创建具有类似内容的~/.pypirc文件:

    [distutils]
    index-servers =
      pypi
      local
    
    [pypi]
    username:<your_pypi_username>
    password:<your_pypi_passwd>
    
    [local]
    repository: http://localhost:8080
    username: <some_username>
    password: <some_passwd>
    
  6. 然后从您希望上载的python项目的目录中, 发出此命令:

    python setup.py sdist upload -r local
    

提示

为了避免将密码以明文形式存储在磁盘上,您可以:
  • 使用带有-r选项的register命令,如下所示:

    python setup.py sdist register -r local upload -r local
    
  • 使用twine库 把程序分成两步。

客户端配置

总是在命令行上指定pypi url有点 麻烦。因为pypiweb将pip/easy_安装重定向到 pypi.python.org索引如果它没有请求的包,那么它是 最好将它们配置为始终使用本地pypi索引。

pip

对于pip这可以通过设置环境变量来完成 pip_extra_index_url在您的.bashrc/中。profile/.zshrc

export PIP_EXTRA_INDEX_URL=http://localhost:8080/simple/

或者将以下行添加到~/.pip/pip.conf

[global]
extra-index-url = http://localhost:8080/simple/

注意

如果您在没有https的远程url上安装了pypiweb 您将收到来自pip的“不可信”警告,敦促您附加 –受信任主机选项。也可以永久包含此选项 在配置文件或环境变量中。

使用不同的wsgi服务器

  • pypiweb附带它自己的瓶子副本。 可以在不同的wsgi服务器上使用瓶子。

  • pypiweb选择 以下是pastecherrypytwistedwsgiref(python的一部分) 可用。

  • 如果以上服务器都不符合您的需要,pypiserver也 公开一个api以获取内部wsgi应用程序,然后可以运行该应用程序 在任何你喜欢的wsgi服务器下。pypiweb.app包含以下内容 接口:

    def app(root=None,
        redirect_to_fallback=True,
        fallback_url="http://pypi.python.org/simple")
    

    并返回wsgi应用程序。root是包目录, redirect_to_fallback指定是否重定向到fallback_url何时 缺少一个包。

阿帕奇E/mod_wsgi

如果您将apache2mod_wsgi一起使用,则以下配置文件 (由Thomas Waldmann提供)可以使用:

# An example pypiserver.wsgi for use with apache2 and mod_wsgi, edit as necessary.
#
# apache virtualhost configuration for mod_wsgi daemon mode:
#    Alias /robots.txt /srv/yoursite/htdocs/robots.txt
#    WSGIPassAuthorization On
#    WSGIScriptAlias /     /srv/yoursite/cfg/pypiserver.wsgi
#    WSGIDaemonProcess     pypisrv user=pypisrv group=pypisrv processes=1 threads=5 maximum-requests=500 umask=0007 display-name=wsgi-pypisrv inactivity-timeout=300
#    WSGIProcessGroup      pypisrv

PACKAGES = "/srv/yoursite/packages"
HTPASSWD = "/srv/yoursite/htpasswd"
TEMPLATE = "/srv/yoursite/template"
import pypiweb
application = pypiweb.app(PACKAGES, redirect_to_fallback=True, password_file=HTPASSWD, add_template=TEMPLATE)

模板

为了简单地更改logo,创建一个目录template/static/images/并添加一个带有徽标的文件python-logo.png。

模板列表:

  • packages.tpl,用于url http//<;my ip>;/包
  • pypiindex.tpl,用于url http//<;我的IP>;/pypi/
  • pypi pkg.tpl,用于url http//<;my ip>;/pypi/pkg
  • 简单的URL http//<;我的IP>;/简单的
  • url http//<;my ip>;的simple prefix.tpl;simple/前缀
  • url http//<;my ip>;//
  • 的welcome.tpl
  • 静态/…用于URL http//<;我的IP>;/静态/…

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Eclipse内存分析器(MAT):不显示当前正在运行的进程   java Apache Velocity:转义字符不能作为关联数组键用于PHP   不截断零的java格式十进制输出   在另一个类文件中调用时返回空值的java getter   java集合获取连接   java解析json使用Gson登录系统应用程序强制关闭   java DelferredResult带有两个请求的ajax请求   java可降低功耗,同时应使用无线   java BoxLayout无法共享错误?   java如何使用计时器制作闹钟   java使用OAuth2保护RESTWeb服务:一般原则   java在一个jframe上显示多个图像和按钮