小编And*_*jos的帖子

如何删除Github的Wiki默认侧边栏

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

在此输入图像描述

我在网上找不到任何按钮或说明来删除此侧边栏.

是否有命令或指令将其移除?

wiki sidebar github

27
推荐指数
1
解决办法
1629
查看次数

boost python的广义异常翻译

用于将特定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++ exception-handling boost-python

8
推荐指数
1
解决办法
1895
查看次数

从setup.py调用另一个构建工具

我有一个中型C++/Python项目,需要外部依赖项和工具才能编译.也就是说,与Qt的MOC编译器进行交互等.

该项目生成库,头文件和python扩展.我想利用python setuptools来分发和构建这个项目.问题是来自distutils的构建位对我们的项目需求并不满意.我们需要并行构建和外部依赖检测之类的东西.

问题:最好的方法是什么?例如,是否可以编写一个setup.py将构建委托给waf?一个工作的例子(即使总结)是一个加号!

python distutils build setuptools waf

5
推荐指数
0
解决办法
215
查看次数

在C++静态boost :: shared_ptr中保存python生成的值

在使用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)

c++ boost shared-ptr boost-python python-bindings

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

Sphinx交叉引用中断在父模块中导入和记录的继承对象

我正在尝试正确构建我的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__,我宣布课AB.B继承自A.在a.__init__,我导入AB喜欢: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,那么我验证它没有与类正确链接 …

python python-sphinx

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

选项多样性与docopt

我想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)

比方说,如果用户通过了-vvv.这几乎与argparse中count操作功能相同.

python command-line argparse docopt

4
推荐指数
1
解决办法
2505
查看次数

限制 docker 日志记录

我有一个运行用户代码的应用程序。我想确保 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在这种情况下得到吗?我在这里做错了什么?

logging docker

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

在Ubuntu上通过pip安装bob时出错

我想在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 ubuntu pip python-bob

2
推荐指数
1
解决办法
1969
查看次数