【问题标题】:No module named 'urlparse even though I am not using urlparse即使我没有使用 urlparse 也没有名为 'urlparse 的模块
【发布时间】:2020-03-06 00:04:04
【问题描述】:

我正在尝试在 google colab 上运行以下代码以生成销售员问题的图表,但是当我运行它时,即使我没有使用此类模块,我也会收到 no module named urlparse found 的错误。我试过 !pip install urlparse 但没有这样的模块(错误:找不到满足 urlparse 要求的版本(来自版本:无) 错误:没有为 urlparse 找到匹配的分布)。 我很困惑这个错误究竟从哪里出现以便解决它

import time
import argparse
import pprint as pp
import os

import pandas as pd
import numpy as np
from concorde.tsp import TSPSolver


if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--num_samples", type=int, default=10000)
    parser.add_argument("--num_nodes", type=int, default=20)
    parser.add_argument("--node_dim", type=int, default=2)
    parser.add_argument("--filename", type=str, default=None)
    opts = parser.parse_args()

    if opts.filename is None:
        opts.filename = f"tsp{opts.num_nodes}_concorde.txt"

    # Pretty print the run args
    pp.pprint(vars(opts))

    set_nodes_coord = np.random.random([opts.num_samples, opts.num_nodes, opts.node_dim])
    with open(opts.filename, "w") as f:
        start_time = time.time()
        for nodes_coord in set_nodes_coord:
            solver = TSPSolver.from_data(nodes_coord[:,0], nodes_coord[:,1], norm="GEO")  
            solution = solver.solve()
            f.write( " ".join( str(x)+str(" ")+str(y) for x,y in nodes_coord) )
            f.write( str(" ") + str('output') + str(" ") )
            f.write( str(" ").join( str(node_idx+1) for node_idx in solution.tour) )
            f.write( str(" ") + str(solution.tour[0]+1) + str(" ") )
            f.write( "\n" )
        end_time = time.time() - start_time

    print(f"Completed generation of {opts.num_samples} samples of TSP{opts.num_nodes}.")
    print(f"Total time: {end_time/3600:.1f}h")
    print(f"Average time: {(end_time/3600)/opts.num_samples:.1f}h")

【问题讨论】:

    标签: python ipython urlparse


    【解决方案1】:

    urlparse 是一个内置的 python2 库,它的名称在 python3 中更改为 urllib.parse。您可能正在使用尚未升级到可与 python3 一起使用的库或库版本。

    最好的办法是对依赖项进行升级。如果您仍然遇到错误,请分享堆栈跟踪,以便我们帮助您找出错误的来源。

    【讨论】:

    • 我升级了所有依赖项,包括协和包,但这是我得到的错误: in () 6 import pandas as pd 7 import numpy as np ----> 8 from concorde.tsp import TSPSolver /usr/local/lib/python3.6/dist-packages/concorde/__init__.py in () 6 from operator import itemgetter 7 from datetime import datetime - ---> 8 from urlparse import urljoin 9 10 try: ModuleNotFoundError: No module named 'urlparse'
    • 不幸的是,您尝试使用的“协和”库不适用于 python3。您的选择是找到一个新库或使用 python2 运行您的代码(我不确定是否应该在 google colab 上)。
    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 2018-01-13
    • 2013-01-02
    • 2021-06-28
    • 1970-01-01
    • 2022-07-29
    • 2020-11-13
    • 2018-08-18
    相关资源
    最近更新 更多