我正在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_requires和dependency_links参数每这一答案.
上面的安装文件无法访问带有404错误的私有存储库 - 这是预期的,因为GitHub会将404返回到未经授权的私有存储库请求.但是,我无法弄清楚如何进行setuptools身份验证.
以下是我尝试过的一些事情:
使用git+ssh://,而不是https://在dependency_links为我想如果安装与回购pip.这失败是因为setuptools无法识别此协议("未知的url类型:git + ssh"),尽管分发文档说它应该.同上git+https和git+http.
https://<username>:<password>@github.com/...- 仍然得到404.(此方法不能与命令行一起使用curl或wget从命令行使用 - 尽管curl -u <username> <repo_url> -O <output_file_name>确实有效.)
将setuptools(0.9.7)和virtualenv(1.10)升级到最新版本.也尝试安装分发虽然这个概述说它被合并回setuptools.无论哪种方式,没有骰子.
目前我只是setup.py打印出一个警告,必须单独下载私人回购.这显然不太理想.我觉得有一些显而易见的东西让我失踪,但却想不到它会是什么.:)
这里没有答案的重复问题.
我想让Django登录在我们的开发服务器上工作.我已经阅读了如何在django站点上记录服务器错误,这似乎是关于该主题的确定答案,并已将配置从答案/sf/answers/447708621/复制到我的settings.py(更改输出当然是WatchedFileHandler的文件;并添加我的管理员电子邮件地址settings.ADMINS).
当我在网站上引发错误500时,AdminEmailHandler和WatchedFileHandler都没有做他们应该做的事情.我已settings.DEBUG到False,并证实了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可以并且很乐意在我的项目的其余部分发送电子邮件,而不是在这种情况下. …
我试图覆盖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行为中一样.(我试过子类化ChoiceField到IconChoiceField这是相同的,但是对于一个默认的部件IconPicker,但Django的将其转换回TypedChoiceField用默认的Select,因为小部件这个问题.)
有没有办法覆盖ChoiceField's widget属性,同时保留choices从模型继承的行为?