几个星期以来,Github wikis在wiki页面右侧提供了一个强制性的侧栏,占用了一些写作空间.例:

我在网上找不到任何按钮或说明来删除此侧边栏.
是否有命令或指令将其移除?
用于将特定C++异常转换为python的当前boost :: python示例如下所示:
void translate (const MyException& e) {
PyErr_SetString(PyExc_RuntimeError, e.what());
}
boost::python::register_exception_translator<MyException>(translate);
Run Code Online (Sandbox Code Playgroud)
不幸的是,这要求我们为每个异常编写一个特定的函数.我们试图通过编写通用异常转换器来简化这一过程:
#include <boost/python.hpp>
// Generalized exception translator for Boost Python
template <typename T> struct GeneralizedTranslator {
public:
void operator()(const T& cxx_except) const {
PyErr_SetString(m_py_except, cxx_except.what());
}
GeneralizedTranslator(PyObject* py_except): m_py_except(py_except) {
boost::python::register_exception_translator<T>(this);
}
GeneralizedTranslator(const GeneralizedTranslator& other): m_py_except(other.m_py_except) {
//attention: do not re-register the translator!
}
private:
PyObject* m_py_except;
};
//allows for a simple translation declaration, removes scope problem
template <typename T> void translate(PyObject* e) {
ExceptionTranslator<T> my_translator(e);
} …Run Code Online (Sandbox Code Playgroud) 我有一个中型C++/Python项目,需要外部依赖项和工具才能编译.也就是说,与Qt的MOC编译器进行交互等.
该项目生成库,头文件和python扩展.我想利用python setuptools来分发和构建这个项目.问题是来自distutils的构建位对我们的项目需求并不满意.我们需要并行构建和外部依赖检测之类的东西.
问题:最好的方法是什么?例如,是否可以编写一个setup.py将构建委托给waf?一个工作的例子(即使总结)是一个加号!
在使用Boost.Python和C++时,有时我们会创建使用类本身和boost::shared_ptr<>版本绑定的类.由于许多原因,这非常方便,可以在很多地方使用.但是,当boost::python返回一个boost::shared_ptr<>在Python中生成并记录在C++静态变量上的值时,该机制似乎无法可靠地工作.
通常情况下,我希望返回的人会有boost::shared_ptr<>一个特殊的删除器来处理这个问题,但事实似乎并非如此.似乎发生的事情是返回的boost::shared_ptr只是包含一个指向Python中生成的值的指针,没有任何特殊考虑删除.这会导致双重删除(一个来自Python解释器本身,一个来自C++静态)的一致崩溃 - 或者至少看起来像它.
要使用下面的代码重现此行为,请创建如下所示的test.cc文件并使用以下脚本进行测试.
#include <boost/python.hpp>
#include <boost/shared_ptr.hpp>
struct A {
std::string _a;
A(std::string a): _a(a) {}
std::string str() { return _a; }
};
static boost::shared_ptr<A> holder(new A("foo"));
static void set_holder(boost::shared_ptr<A> a_ptr) {
holder = a_ptr;
}
static boost::shared_ptr<A> get_holder() {
return holder;
}
BOOST_PYTHON_MODULE(test)
{
using namespace boost::python;
class_<A, boost::shared_ptr<A> >("A", init<std::string>())
.def("__str__", &A::str)
;
def("set_holder", &set_holder);
def("get_holder", &get_holder);
}
Run Code Online (Sandbox Code Playgroud)
使用以下Python测试程序:
import test
print(str(test.get_holder())) …Run Code Online (Sandbox Code Playgroud) 我正在尝试正确构建我的Sphinx文档并且交叉引用(包括来自继承关系的那些)正常工作.
在我的项目中,我有一个情况,在下面的例子中描述,为了方便起见,我在这个github repo上进行了复制:
$ tree .
.
??? a
? ??? b
? ? ??? __init__.py
? ??? __init__.py
??? conf.py
??? index.rst
??? README.md
Run Code Online (Sandbox Code Playgroud)
在a.b.__init__,我宣布课A和B.B继承自A.在a.__init__,我导入A和B喜欢:from .b import A, B.我在实际项目中执行此操作的原因是减少模块上的导入路径,同时将特定类的实现保存在单独的文件中.
然后,在我的第一个文件,我车博士模块a用.. automodule:: a.因为a.b它只是一个辅助模块,所以我不自动调整它,因为我不想重复引用相同的类,也不要让用户混淆他们应该做的事情.我也设定show-inheritance期待a.B将有一个反向链接a.A.
如果我试图以非常挑剔的方式构建sphinx,我将收到以下警告:
WARNING: py:class reference target not found: a.b.A
Run Code Online (Sandbox Code Playgroud)
如果我查看生成的类文档B,那么我验证它没有与类正确链接 …
我想docopt用于解析可以多次接收相同选项的命令行.有人可以解释一下怎么做吗?
一个测试例子:
#!/usr/bin/env python
"""
Test program.
Usage:
test.py -v
Options:
-v Flag that should be counted
"""
import docopt
print docopt.docopt(__doc__)
Run Code Online (Sandbox Code Playgroud)
如果我用这个test.py -v,我得到:
{'-v': True}
Run Code Online (Sandbox Code Playgroud)
如果我运行它test.py -vv,它会显示用法消息(表示命令行无效).
我想调整选项文档,以便docopt返回给我:
{'-v': 1}
Run Code Online (Sandbox Code Playgroud)
当只有1 -v通过时:
{'-v': 3}
Run Code Online (Sandbox Code Playgroud)
我有一个运行用户代码的应用程序。我想确保 Docker 不会收集太多我无论如何都会丢弃的日志。为此,我尝试使用max-size记录max-file选项来获取用户输出的最后几千字节并丢弃其余部分,但这似乎不起作用。
如果我做:
$ docker run --log-opt max-size=2 --log-opt max-file=1 python:2 python -c "for i in range(10): print i"
0
1
2
3
4
5
6
7
8
9
Run Code Online (Sandbox Code Playgroud)
然后它仍然在屏幕上打印完整的输出。如果我在主机上手动检查日志,我可以看到包含完整输出的文件。
我不应该只9\n在这种情况下得到吗?我在这里做错了什么?
我想在Ubuntu中安装bob.
我只是按照bob教程中的方法,但它没有用.
相反,我得到以下输出:
sudo pip install bob
Collecting bob
Downloading bob-2.6.2.zip (44kB)
100% |????????????????????????????????| 51kB 34kB/s
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/lib/python2.7/dist-packages (from bob)
Collecting bob.extension==2.3.9 (from bob)
Downloading bob.extension-2.3.9.zip (175kB)
100% |????????????????????????????????| 184kB 19kB/s
Collecting bob.blitz==2.0.12 (from bob)
Downloading bob.blitz-2.0.12.zip (50kB)
100% |????????????????????????????????| 51kB 25kB/s
Complete output from command python setup.py egg_info:
Installed /tmp/pip-build-vxxn4w/bob.blitz/.eggs/bob.extension-2.3.11-py2.7.egg
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-vxxn4w/bob.blitz/setup.py", line 70, in <module>
system_include_dirs=system_include_dirs,
File "/tmp/pip-build-vxxn4w/bob.blitz/.eggs/bob.extension-2.3.11-py2.7.egg/bob/extension/__init__.py", line …Run Code Online (Sandbox Code Playgroud) python ×4
boost-python ×2
c++ ×2
argparse ×1
boost ×1
build ×1
command-line ×1
distutils ×1
docker ×1
docopt ×1
github ×1
logging ×1
pip ×1
python-bob ×1
setuptools ×1
shared-ptr ×1
sidebar ×1
ubuntu ×1
waf ×1
wiki ×1