小编Kal*_*Kal的帖子

在Python(2.7)中,为什么os.remove与os.unlink不相同?

>>> import sys
>>> sys.version
'2.7.3 (default, Mar 13 2014, 11:03:55) \n[GCC 4.7.2]'
>>> import os
>>> os.remove is os.unlink
False
>>> os.remove == os.unlink
True
Run Code Online (Sandbox Code Playgroud)

这是为什么?是不是os.unlink应该是os.remove的别名?

python object-identity python-2.7 object-equality

10
推荐指数
1
解决办法
4870
查看次数

验证日期字段,以便在 Django 中不需要未来的日期?

我正在为我的项目创建一个网站,我有一个名为的字段Purchase_Date

class Member_Registration(models.Model):
    Purchase_Date=models.DateField(max_length=10, help_text="Enter the date of purchase")
Run Code Online (Sandbox Code Playgroud)

如果用户选择了未来的日期,我想抛出一个错误。我该怎么做?

python django django-models python-3.x

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

PYTHONPATH 与符号链接

昨天,我编辑了bin/activate我的 virtualenv的脚本,以便它设置PYTHONPATH环境变量以包含某个外部包的开发版本。我不得不这样做,因为该setup.py包使用distutils并且不支持develop命令 à la setuptoolsPYTHONPATH就在终端中使用 Python 解释器而言,设置工作正常。

然而,刚才我在 PyCharm 中打开了项目设置,发现 PyCharm 并不知道有问题的外部包——PyCharm 既没有列出外部包,也没有列出它的路径。自然,这是因为 PyCharm 不(并且不能可靠地)解析或获取bin/activate脚本。我可以在 PyCharm 项目设置中手动添加路径,但这意味着我必须重复自己(一次在bin/activatePyCharm 项目设置中)。这不是 DRY,那很糟糕。

在 中创建site-packages一个指向外部包的符号链接几乎是完美的。这样,至少 PyCharm 的源代码编辑器可以找到包,终端中的 Python 解释器也可以。但是,不知何故 PyCharm 仍然没有在项目设置中列出包,我不确定这样保留它是否可以。

那么我如何才能将外部包添加到我的 virtualenv/项目中......

  1. 我不必重复自己;和…
  2. Python 解释器和 PyCharm 都知道吗?

python virtualenv pythonpath pycharm python-2.7

5
推荐指数
1
解决办法
2469
查看次数

Django管理命令在cron中不起作用

我在manage.py celery call myapp.tasks.mytask使用我的用户crontab 调度时遇到问题,因为当cron尝试运行该作业时,它会在stderr中获取此信息(将其邮寄给我,如/var/mail/kal)

Unknown command: 'celery'
Type 'manage.py help' for usage.
Run Code Online (Sandbox Code Playgroud)

相同的命令完全来自常规的bash登录shell,但它在crontab中不起作用.

我在Debian上这样做:

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.0 (wheezy)
Release:        7.0
Codename:       wheezy
Run Code Online (Sandbox Code Playgroud)

我已经在StackOverflow上阅读了许多类似的问题,并尝试了许多建议的解决方案.到目前为止,他们都没有为我工作过.以下是我到目前为止尝试过的解决方案:

首先,我确保在crontab中指定相关的环境变量:

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)

注意:这些在以下所有解决方案中都保持不变.

1.使用python可执行文件和manage.py脚本的完整路径

* * * * * /home/kal/.virtualenvs/foo_dev/bin/python /home/kal/foo/manage.py celery call myapp.tasks.mytask
Run Code Online (Sandbox Code Playgroud)

2.首先进入项目路径

* * * * * cd /home/kal/foo && /home/kal/.virtualenvs/foo_dev/bin/python ./manage.py celery call myapp.tasks.mytask
Run Code Online (Sandbox Code Playgroud)

3.在bash脚本中包装所有内容

〜/ mytask.sh的内容:

#!/usr/bin/env bash
source /home/kal/.virtualenvs/foo_dev/bin/activate;
cd /home/kal/foo;
./manage.py celery …
Run Code Online (Sandbox Code Playgroud)

python django cron

5
推荐指数
1
解决办法
1926
查看次数

单个独立文字可以形成有效的JSON"文档"吗?

例如,这应该是一个有效的JSON文档吗?

"foo"
Run Code Online (Sandbox Code Playgroud)

json.org上的语法规范并不完全清楚.我不认为在规范中的任何地方都说任何东西必须在有效的JSON文档中的{}对象或[]数组中.

JSONLint将独立字符串标记"foo"为错误,并期望所有内容都在{}对象或[]数组中.

但是,主流浏览器(IE 8,IE 10,Chrome 28,Firefox 23,Opera 12)的JSON对象接受单独的文字就好了:

>>> JSON.parse('"foo"');
"foo"
>>> JSON.parse('true');
true
>>> JSON.parse('1234');
1234
Run Code Online (Sandbox Code Playgroud)

Python 2.7+也是如此:

>>> import json
>>> json.loads('"foo"')
u'foo'
>>> json.loads('true')
True
>>> json.loads('1234')
1234
Run Code Online (Sandbox Code Playgroud)

那么谁是对的,谁是错的?

validation json specifications lint

3
推荐指数
1
解决办法
237
查看次数