setuptools 30.3.0引入了声明性包配置,使我们可以将以前直接传递给文件的大多数选项setuptools.setup放入setup.cfg文件中。例如,给出以下setup.cfg:
[metadata]
name = hello-world
description = Example of hello world
[options]
zip_safe = False
packages =
hello_world
install_requires =
examples
example1
Run Code Online (Sandbox Code Playgroud)
仅包含一个setup.py
import setuptools
setuptools.setup()
Run Code Online (Sandbox Code Playgroud)
会做所有正确的事情。
但是,我无法找出的正确语法extras_require。在setupargs中,它是一个字典,例如
setup(extras_require={'test': ['faker', 'pytest']})
Run Code Online (Sandbox Code Playgroud)
但是我找不到在setup.cfg中使用的正确语法。我尝试阅读文档,但是找不到那里的setuptools期望的正确语法。我也尝试了一些猜测
[options]
extras_require =
test=faker,pytest
Run Code Online (Sandbox Code Playgroud)
它失败。
Traceback (most recent call last):
File "./setup.py", line 15, in <module>
'pylint',
File "/lib/site-packages/setuptools/__init__.py", line 128, in setup
_install_setup_requires(attrs)
File "/lib/site-packages/setuptools/__init__.py", line 121, in _install_setup_requires
dist.parse_config_files(ignore_option_errors=True)
File "/lib/python3.6/site-packages/setuptools/dist.py", line 495, in parse_config_files
self._finalize_requires() …Run Code Online (Sandbox Code Playgroud) 我对psycopg2 文档感到困惑,它说:
另请注意,可以使用环境变量将相同的参数传递给客户端库。
我希望如果我导出了环境变量以便我可以使用 进行连接psql,那么我应该能够使用 psycopg2 以相同的方式建立连接。但情况似乎并非如此。
例如,在容器中运行一个全新的 postgresql:
$ docker port frosty_lichterman 5432
0.0.0.0:32768
$ export PGHOST=localhost PGUSER=postgres PGPORT=32768
Run Code Online (Sandbox Code Playgroud)
我现在可以使用 psql 进行连接,而无需提供任何显式连接字符串:
$ psql -c 'select 1;'
?column?
----------
1
(1 row)
Run Code Online (Sandbox Code Playgroud)
但在 python 中,我不能:
>>> import psycopg2 as p
>>> c = p.connect()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/michaels/.local/share/virtualenvs/Apps-XhIvHnVr/lib/python2.7/site-packages/psycopg2/__init__.py", line 127, in connect
raise TypeError('missing dsn and no parameters')
TypeError: missing dsn and no parameters
Run Code Online (Sandbox Code Playgroud)
即使我可以使用 Python …
app/code/core/Customer/etc/config.xml 在Magento保存地址之前和之后注册观察员:
<events>
<customer_address_save_before>
<observers>
<customer_address_before_save_viv_observer>
<class>customer/observer</class>
<method>beforeAddressSave</method>
</customer_address_before_save_viv_observer>
</observers>
</customer_address_save_before>
<customer_address_save_after>
<observers>
<customer_addres_after_save_viv_observer>
<class>customer/observer</class>
<method>afterAddressSave</method>
</customer_addres_after_save_viv_observer>
</observers>
</customer_address_save_after>
</events>
Run Code Online (Sandbox Code Playgroud)
......但我找不到任何证据证明Magento实际上在任何地方派遣了这些事件:
$ grep -RF 'dispatchEvent(' . | grep -F customer_addres
./app/code/core/Mage/Customer/Model/Address/Abstract.php: Mage::dispatchEvent('customer_address_format', array('type' => $formatType, 'address' => $this));
Run Code Online (Sandbox Code Playgroud)
据我所知Mage::dispatchEvent(…),Magento解雇事件的唯一方法.这些事件真的发生了吗?(我希望如此,因为我真的可以使用一些在地址上发射的事件来节省时间.)
我使用以下bash代码想要将多行字符串读入数组.我希望每个数组元素对应一个字符串的一行.
mytext="line one
line two
line three"
IFS=$'\n' read -a lines <<<"${mytext}"
echo "len=${#lines[@]}"
for line in "${lines[@]}"
do
echo "[$line]"
done
Run Code Online (Sandbox Code Playgroud)
我希望"len"应该等于3,并且"lines"数组应该正确初始化.但是,我得到了以下结果:
len=1
[line one]
Run Code Online (Sandbox Code Playgroud)
我使用了错误的"IFS"吗?bash代码中有哪些错误?提前致谢.
来自Python Cookbook
python timeit.py -s"import random" -s"x=range(100000); random.shuffle(x)" "sorted(x)"
10 loops, best of 3: 152 msec per loop
Run Code Online (Sandbox Code Playgroud)
什么是-s标志吗?在线搜索,python帮助和SO.但没有找到一个好的解释.谢谢.
最近我开始注意到我们以某种方式解决了比我们创建的更多的工单。由于这似乎是矛盾的,我只能得出两个结论:
……或者两者都有,我想。这是今天早上的图表截图:
(正在绘制的过滤器是一个自定义过滤器。我不知道这是否相关。)
除了“lol JIRA”之外,还有其他解释吗?
Terraform可能会在.terraform目录中创建一些文件.
terraform get如果我使用本地模块,该命令将为我的本地模块路径创建符号链接.那些路径名称是哈希,比如
7a1d2376c59a613c3888163f019b98c1@ -> /Users/michael/dev/a-project/terraform/modules/netpart
dc86adf2084ae95b189765d26b75702d@ -> /Users/michael/dev/a-project/terraform/modules/cluster
e03511e017c5612ae4b9e9ebc49d4611@ -> /Users/michael/dev/a-project/terraform/modules/cluster
eb8c48ae43e85626ff456d0a58a6a6a6@ -> /Users/michael/dev/a-project/terraform/modules/netpart
Run Code Online (Sandbox Code Playgroud)
所有这些文件都在同一个仓库中.当一个同事克隆了那个仓库时,他注意到运行terraform get导致了新的符号链接,即使模块没有改变.
我要补充的.terraform /模块目录的.gitignore并要求所有的开发人员运行terraform get任何时候他们git pull?
我试图了解sed命令和循环.我需要参考文本的一部分(20行)并将其附加到文件名的csv.这是我的代码
for i in ~/mspl/*.doc
do
catdoc "$i" > auto.txt
sed -e '1,20!d' auto.txt > auto1.txt
sed -e '1s/^/"$i" ;/' auto1.txt > auto2.txt
sed -e '20s/$/~/' auto2.txt > auto3.txt
cat auto3.txt >> lines.csv
done
Run Code Online (Sandbox Code Playgroud)
问题是我的第二个"i"参数没有转换为csv中的文件名.
在线
sed -e '1s/^/"$i" ;/' auto1.txt > auto2.txt
Run Code Online (Sandbox Code Playgroud)
请告诉我这里的错误是什么?
我想将一个多行字符串写入一个只能以root权限访问的文件.
这是我到目前为止:
sudo cat > /etc/init/myservice.conf <<EOL
start on runlevel [2345]
stop on runlevel [06]
respawn
script
cd ~/somefolder
. venv/bin/activate
exec python manage.py runserver 0.0.0.0:8080
end script
EOL
Run Code Online (Sandbox Code Playgroud)
当这个命令时,我得到的只是"Permission Denied".手动创建文件有效.