我是使用Eclipse和PyDev(Aptana Studio 3)的初学者.我不习惯,我不理解像Eclipse这样的大型IDE中的工作流程.
我有一个简单的任务:我有一个简单的Python脚本,我想在Eclipse中打开并运行,在Eclipse控制台中输出.或调试它.
到目前为止,我使用了另一个名为Eric4的 IDE ,它允许我按照自己的意愿行事 - 打开文件并立即运行,无需创建项目或设置启动配置.
这在Eclipse中是否可行,或者我必须为我想运行或调试的每个文件创建一个项目?我想了解它是如何工作的.
我想我明白至少需要创建一个项目来设置路径(PYTHONPATH),但是如果它是一个单独的脚本 - 默认情况下会以某种方式使用当前目录?
例如,我有一个文件夹snippets,其中我保留了很多python脚本,演示了一些功能.我如何逐个打开这些文件并运行它们?
我的大多数同事都在一个单独的控制台中启动python脚本 - python my_scipt.py.
我正在开发一个 Python 应用程序,我需要多次检查对象是否是 DB 模型的子类。
我做了自己的功能来做到这一点:
def isModel(obj):
return isinstance(obj, type) and issubclass(obj, Model)
Run Code Online (Sandbox Code Playgroud)
issubclass引发异常 obj is not a class,但我希望它只返回 False 如果obj不是一个类。
我认为最好制作另一个功能,而不是使用内置的issubclass:
def _issubclass(obj, Klass):
return isinstance(obj, type) and issubclass(obj, Klass)
Run Code Online (Sandbox Code Playgroud)
但是为什么内置issubclass不是这样制作的呢?什么原因?我错过了什么吗?
更新:
我有模型:
class BaseModel(object):
id = Field(...)
class MyModel(BaseModel):
deleted = Field(...)
Run Code Online (Sandbox Code Playgroud)
在一个函数中,我想检查一个参数是否是一个BaseModel:
def update_model(model):
assert isinstance(model, type) and issubclass(model, BaseModel), 'Must be a model'
Run Code Online (Sandbox Code Playgroud)
issubclass回答一个对象是否是给定类的子类的问题。如果对象是类实例,那么 IMO 的答案应该是“不,您的对象不是 BaseModel 子类,因为它根本不是类”。
在 Python 中是很正常的,而不是if something is not …
我在文档中读到:
...因为事务在游标执行查询时开始,但在Connection对象执行COMMIT或ROLLBACK时结束.
import MySQLdb
db = MySQLdb.connect(user="root", db="test")
c = db.cursor()
c.execute("SELECT * FROM books")
print c.fetchall()
Run Code Online (Sandbox Code Playgroud)
我怀疑MySQLdb甚至在不修改数据的查询(如SELECT)上启动事务,因为很难知道查询是否只读取数据而不写入数据.
cursor.commit()在每次查询后执行,以确保没有表被锁定?谢谢
我有一个 Jenkins shell 脚本,其中包含类似的内容,可以从模板创建 Nginx 配置。
nginx.conf.j2:
server {
listen 80;
server_name {{ server_name }};
...
Run Code Online (Sandbox Code Playgroud)
将所有环境变量传递给模板的渲染过程:
env server_name=$SERVER_NAME \
python - <<'EOF' > "nginx.conf"
import os, jinja2
template = jinja2.Template(open(os.environ["nginx.conf.j2"]).read())
print template.render(**os.environ)
EOF
Run Code Online (Sandbox Code Playgroud)
如何使用 Ansible 做同样的事情?我想可能是这样的:
ansible <host-pattern> -m template -a "src=nginx.conf.j2 dest=nginx.conf"
Run Code Online (Sandbox Code Playgroud)
但如何跳过<host-pattern>本地操作呢?如何将环境变量传递给模板?
我有两台发电机.第一个生成器有时需要调用第二个生成器并从中返回它产生的值:
def a():
for _b in b():
yield _b
def b():
yield 1
yield 2
for _a in a():
print _a
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式来做到这一点:
for _b in b():
yield _b
Run Code Online (Sandbox Code Playgroud)
我试过这个:
yield *b()
Run Code Online (Sandbox Code Playgroud)
但肯定它不起作用.我有Python 2.6.
Django-Tastypie有ImmediateHttpResponse例外,允许立即回复客户端:
raise ImmediateHttpResponse(response='a message')
Run Code Online (Sandbox Code Playgroud)
Django有Http404,但我找不到更普遍的例外ImmediateHttpResponse.
您使用什么技术立即向客户返回400响应?
例如有模型:
class Subscriber(Model):
def delete(self, *args, **kwargs):
raise ImmediateHttpResponse('Deleting subcribers is not allowed!')
Run Code Online (Sandbox Code Playgroud)
并尝试删除对象将返回给客户端一个400给定消息的响应.
我nosetests在详细模式下运行我的测试:
....
test_cache_region (tests.test_sysutil.TestCachedMethodDecorator) ... ok
test_expire (tests.test_sysutil.TestCachedMethodDecorator) ... ok
test_lru (tests.test_sysutil.TestCachedMethodDecorator) ... ok
test_max_capacity (tests.test_sysutil.TestCachedMethodDecorator) ... ok
test_DecimalJSONEncoder (tests.test_util.UtilTestCase) ... ok
test_cdecimal_support (tests.test_util.UtilTestCase) ... ok
test_ceil_with_ndigits (tests.test_util.UtilTestCase) ... ok
test_switch_keyboard (tests.test_util.UtilTestCase) ... ok
...
Run Code Online (Sandbox Code Playgroud)
有没有办法轻松地将报告格式更改为:
...
tests.test_sysutil.TestCachedMethodDecorator.test_lru ... ok
tests.test_sysutil.TestCachedMethodDecorator.test_max_capacity ... ok
tests.test_util.UtilTestCase.test_DecimalJSONEncoder ... ok
tests.test_util.UtilTestCase.test_cdecimal_support ... ok
...
Run Code Online (Sandbox Code Playgroud) 我正在查看一长串 DNA 核苷酸,并正在寻找以起始代码“AAA”开头并以停止代码“CCC”结尾的序列。由于核苷酸是三联体,我发现的每个序列的开始和结束之间的核苷酸数量必须是三的倍数。
例如,“AAAGGGCCC”是一个有效序列,但“AAAGCCC”不是。
此外,在每个终止码之前,我想要关于特定阅读框架的最长链。
例如,如果 DNA 是“AAAGGGAAACCC”,那么“AAAGGGAAACCC”和“AAACCC”在技术上都是有效的,但由于它们共享相同的停止代码实例,我只想要最长的 DNA 链“AAAGGGAAACCC”。此外,如果我的链是“AAAAGGCCCCC”,我必须返回“AAAAGGCCC”和“AAAGGCCCC”,因为它们处于不同的阅读框架(一个阅读框架是 mod 3,另一个是 mod 1。)
虽然我认为我有代码来搜索满足 3 的倍数要求且不重叠的字符串,但我不确定如何实现保持相同阅读框架的第二个标准。我下面的代码只会返回不重叠的最长字符串,但不区分阅读帧,因此在上面的示例中,它会捕获“AAAAGGCCC”而不是“AAAGGCCCC”:
match = re.finditer(r"AAA\w{3}{%d}BBB$"% (minNucleotide-6, math.ceil((minNucleotide-6)/3))
Run Code Online (Sandbox Code Playgroud)
抱歉啰嗦了,感谢您的浏览!
我正在创建一个需要使用python2.7.6的Django应用。我的系统已安装python3.4.1,因此我必须使用安装了python2.7的virtualenv。我使用Pycharm安装了一个virtualenv,并将其命名为django_python_2.7,但是当我在终端中将其激活并运行“ python”时,它仍然表明它正在使用系统的python3.4.1:这是我所做的:
激活环境:
source django_python_2.7/bin/activate
运行python,它显示:
Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 00:54:21) --->这是系统级别的python,而不是virtualenv中安装的一个
但是,当我运行时which python,它显示了指向virtualenv的python版本的正确路径:
/Users/calvinmwhu/....../django_python_2.7/bin/python
Run Code Online (Sandbox Code Playgroud)
当我显式运行该virtualenv中安装的python版本时:
django_python_2.7/bin/python
Run Code Online (Sandbox Code Playgroud)
它显示正确的版本:
Python 2.7.6 (default, Sep 9 2014, 15:04:36)
Run Code Online (Sandbox Code Playgroud)
我不知道是怎么回事。我正在Pycharm IDE中开发此应用程序,但我真的很喜欢在终端中执行命令。但是在终端中,virtualenv没有使用正确版本的python。为什么为什么在virtualenv中运行简单的“ python”命令仍然默认为系统的python?
有人可以提供一些提示吗?是否有必要更改PATH变量以使其包含virtualenv的python的路径?
python ×8
eclipse ×2
ansible ×1
django ×1
frame ×1
mysql ×1
mysql-python ×1
nose ×1
nosetests ×1
pydev ×1
python-2.7 ×1
regex ×1
virtualenv ×1