小编use*_*005的帖子

将 Django 项目升级到 Python3 - 迁移失败

我有一个用Python2.7开发的Django项目,它目前使用Django版本1.10。我现在正在升级 - 首先升级到 Python3,然后我将升级 Django。

当我创建Python3虚拟环境并运行测试时:

venv bash% ./manage.py tests
Run Code Online (Sandbox Code Playgroud)

我得到了大量的回溯:

Traceback (most recent call last):
  File "./manage.py", line 9, in <module>
    execute_from_command_line( sys.argv )
  File "/home/hove/sleipner/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/home/hove/sleipner/venv/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/hove/sleipner/venv/lib/python3.5/site-packages/django/core/management/commands/test.py", line 29, in run_from_argv
    super(Command, self).run_from_argv(argv)
  File "/home/hove/sleipner/venv/lib/python3.5/site-packages/django/core/management/base.py", line 305, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/hove/sleipner/venv/lib/python3.5/site-packages/django/core/management/base.py", line 356, in execute
    output = self.handle(*args, **options)
  File "/home/hove/sleipner/venv/lib/python3.5/site-packages/django/core/management/commands/test.py", line 72, in handle
    failures = test_runner.run_tests(test_labels)
  File "/home/hove/sleipner/venv/lib/python3.5/site-packages/django/test/runner.py", line 549, in run_tests …
Run Code Online (Sandbox Code Playgroud)

django python-3.x

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

我不明白这种超载如何解决“工作”的

我有一个C ++类,其中的构造函数针对不同的数据类型进行了重载。一个简化的示例来说明此问题是:

#include <iostream>
#include <vector>
#include <string>

class c {
public:

    c(const std::string& n, int v) :
        name(n),
        int_value(v)
    {
        std::cout << "Running <int> constructor" << std::endl;
    }

    c(const std::string& n, double v, const std::vector<double>& extra_args) :
        name(n),
        double_value(v)
        args(extra_args)
    {
        std::cout << "Running <double> constructor" << std::endl;
    }



private:
    std::string name;
    int int_value;
    double double_value;
    std::vector<double> args;
};


int main(int argc, char **argv) {
    c i("name", int());

    // This line should in my opinion not compile at all; …
Run Code Online (Sandbox Code Playgroud)

c++

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

枚举值的C ++十进制类型

我有一个使用旧式枚举来标记类型的现有代码库:

enum value_type {
    FLOAT = 1,
    DOUBLE = 2,
    INT = 3
};
Run Code Online (Sandbox Code Playgroud)

然后,我想std::vector<T>基于枚举值实例化-即类似:

auto make_vector( value_type enum_value ) -> decltype(std::vector<decltype( enum_value )>) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

当然,这decltype(enum_value)是行不通的-我想要像道德上这样的东西:

if (enum_value == FLOAT)
   return decltype(double());

if (enum_value == DOUBLE)
   return decltype(float());   

...
Run Code Online (Sandbox Code Playgroud)

这样完全有可能-不用求助于if (enum_value == )编程风格吗?

c++ templates

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

cmake try_compile:使用在配置中找到的库

我正在用 cmake 构建一个项目。项目使用外部库plplot;我已将 cmake 配置为库和标头,并将其缓存在 variables 中${PLPLOT_LIBRARY}, ${PLPLOT_LIB_PATH} and ${PLPLOT_INCLUDE_PATH}。在 plplot 库中,一个函数已更改名称:plwid -> plwidth我想检测它。我写了一个小try_compile()测试:

try_compile(HAVE_PLWID ${CMAKE_BINARY_DIR} cmake/tests/test_plwid.c)
Run Code Online (Sandbox Code Playgroud)

但是这个测试总是会失败,因为我必须将头和库信息传递给try_compile进程。gcc像这样手动调用:

gcc -I${PLPLOT_INCLUDE_PATH} cmake/tests/test_plwid.c -L${PLPLOT_LIB_PATH} -l${PLPLOT_LIBRARY}
Run Code Online (Sandbox Code Playgroud)

作品。但是我不明白如何将必要的标志传递给try_compile命令:我试过:

 try_compile(HAVE_PLWID ${CMAKE_BINARY_DIR} cmake/tests/test_plwid.c
             INCLUDE_DIRECTORIES ${PLPLOT_INCLUDE_PATH}
             LINK_DIRECTORIES ${PLPLOT_LIB_PATH}
             LINK_LIBRARIES ${PLPLOT_LIBRARY})
Run Code Online (Sandbox Code Playgroud)

然后我得到了 cmake 配置错误:

Attempt at a recursive or nested TRY_COMPILE in directory

    /path/to/build
Run Code Online (Sandbox Code Playgroud)

我非常有信心这些${PLPLOT_XXX}变量是正确的,至少基于这些变量,构建的其余部分可以正常工作。

更新:如果我cmake使用--debug_trycompile命令调用并转到build/CMakeFiles/CMakeTmp目录并cmake手动调用:

cmake . -DINCLUDE_DIRECTORIES=/path/plplot/include -DLINK_DIRECTORIES=/path/to/plplot/lib -DLINK_LIBRARIES=plplotd
Run Code Online (Sandbox Code Playgroud)

测试程序将正确构建和链接;所以似乎挑战是将这些选项正确传递给try_compile() cmake命令调用?

cmake

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

编译器可以优化远离方法调用吗?

我有一个像这样的C++类:

class MyClass {
    int calculate( int arg1 ) const;
    void side_effect( int arg) const;
}
Run Code Online (Sandbox Code Playgroud)

使用方式如下:

{
    MyClass m;
    m.calculate( 100 );
    m.side_effect( 100 );
}
Run Code Online (Sandbox Code Playgroud)

编译器是否可以自由跳过m.calculate( )调用 - 因为我没有保留返回值?对于该side_effect( )方法,我真的希望编译器不能跳过调用 - 即使方法被标记了const

编辑:我问这个问题的原因是我的calculate( )功能有副作用,但通过使用mutable它被标记为const.现在在正常情况下我想要保持返回值,并且整个问题没有实际意义 - 但在上面说明的情况下,我只对确定已经调用副作用感兴趣(是的 - 我知道它不是漂亮 ...).阅读答案/评论我觉得你认为编译器可以推断一种方法是否有副作用; 这让我很惊讶?

c++

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

标签 统计

c++ ×3

cmake ×1

django ×1

python-3.x ×1

templates ×1