小编Eri*_*c P的帖子

Python setuptools:如何在install_requires下列出私有存储库?

我正在setup.py为项目创建一个文件,该文件依赖于私有GitHub存储库.该文件的相关部分如下所示:

from setuptools import setup
setup(name='my_project',
    ...,
    install_requires=[
        'public_package',
        'other_public_package',
        'private_repo_1',
        'private_repo_2',
    ],
    dependency_links=[
        'https://github.com/my_account/private_repo_1/master/tarball/',
        'https://github.com/my_account/private_repo_2/master/tarball/',
    ],
    ...,
)
Run Code Online (Sandbox Code Playgroud)

我使用的setuptools,而不是distutils因为后者不支持install_requiresdependency_links参数每这一答案.

上面的安装文件无法访问带有404错误的私有存储库 - 这是预期的,因为GitHub会将404返回到未经授权的私有存储库请求.但是,我无法弄清楚如何进行setuptools身份验证.

以下是我尝试过的一些事情:

  1. 使用git+ssh://,而不是https://dependency_links为我想如果安装与回购pip.这失败是因为setuptools无法识别此协议("未知的url类型:git + ssh"),尽管分发文档说它应该.同上git+httpsgit+http.

  2. https://<username>:<password>@github.com/...- 仍然得到404.(此方法不能与命令行一起使用curlwget从命令行使用 - 尽管curl -u <username> <repo_url> -O <output_file_name>确实有效.)

  3. 将setuptools(0.9.7)和virtualenv(1.10)升级到最新版本.也尝试安装分发虽然这个概述说它被合并回setuptools.无论哪种方式,没有骰子.

目前我只是setup.py打印出一个警告,必须单独下载私人回购.这显然不太理想.我觉得有一些显而易见的东西让我失踪,但却想不到它会是什么.:)

这里没有答案的重复问题.

python github setuptools

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

尽管(推测)正确的配置,Django也不会记录错误

我想让Django登录在我们的开发服务器上工作.我已经阅读了如何在django站点上记录服务器错误,这似乎是关于该主题的确定答案,并已将配置从答案/sf/answers/447708621/复制到我的settings.py(更改输出当然是WatchedFileHandler的文件;并添加我的管理员电子邮件地址settings.ADMINS).

当我在网站上引发错误500时,AdminEmailHandler和WatchedFileHandler都没有做他们应该做的事情.我已settings.DEBUGFalse,并证实了Django的可发送电子邮件和写入文件.我也尝试直接从Django shell登录:

$ /usr/local/pythonenv/DJANGO/bin/python manage.py shell
...
>>> import logging
>>> l = logging.getLogger('django')
>>> l.handlers[0]
<logging.handlers.WatchedFileHandler instance at 0xcd3b48>
>>> l.error("This should write to a file")
>>> l = logging.getLogger('django.request')
>>> l.handlers[0]
<django.utils.log.AdminEmailHandler instance at 0xcd37e8>
>>> l.error("This should email the addresses in settings.ADMINS")
Run Code Online (Sandbox Code Playgroud)

在上述情况下,记录器都没有发出窥视.

但是,通用Python日志记录将起作用(至少对于该文件),证明它不是文件权限问题:

$ python     # (or /usr/local/pythonenv/DJANGO/bin/python manage.py shell)
...
>>> import logging
>>> logging.basicConfig(filename='/path/to/same/file/as/above', level=logging.DEBUG)
>>> logging.error("This one shows up")
Run Code Online (Sandbox Code Playgroud)

如上所述,Django可以并且很乐意在我的项目的其余部分发送电子邮件,而不是在这种情况下. …

python django error-logging

5
推荐指数
0
解决办法
814
查看次数

在不重新指定选项的情况下覆盖Django ModelForm中的ChoiceField小部件

我试图覆盖Django的默认小部件,ChoiceField同时保留模型中生成的选择.这是我模型的相关部分:

class UserGroup(models.Model):
    icon = models.CharField(max_length=100, choices=<function call>)
Run Code Online (Sandbox Code Playgroud)

我的形式:

class UserGroupForm(forms.ModelForm):
    icon = models.ChoiceField(widget=IconPicker)

    class Meta:
        model = UserGroup
        fields = [ 'icon', ]
Run Code Online (Sandbox Code Playgroud)

覆盖ChoiceField像这个clobbers的小部件,该form.fields['icon'].choices属性通常从模型继承并将其设置为,[]因为Django.如果我icon从表单中删除字段定义,则保留选项 - 但当然窗口小部件默认为a Select.

(遗憾的是,无法从表单代码中访问生成模型字段选项的函数.)

到目前为止,我提出的最好的方法是将icon表单字段定义更改为

icon = ChoiceField(choices=UserGroup._meta.get_field_by_name('icon')[0].choices, 
                   widget=IconPicker)
Run Code Online (Sandbox Code Playgroud)

但这很笨重,我宁愿自动传递选择,就像在内省ChoiceField行为中一样.(我试过子类化ChoiceFieldIconChoiceField这是相同的,但是对于一个默认的部件IconPicker,但Django的将其转换回TypedChoiceField用默认的Select,因为小部件这个问题.)

有没有办法覆盖ChoiceField's widget属性,同时保留choices从模型继承的行为?

django django-models django-forms

4
推荐指数
2
解决办法
5252
查看次数