Python3运行LSTM预测报错:name 'xrange' is not defined求解
Hey there, let's figure out why those compatibility tweaks you tried aren't resolving the error. The core issue here is that the xrange references causing the problem are inside the lstm module's own code (the functions predict_sequences_multiple and plot_results_multiple), not in your script. Your current fixes only make xrange available in your main code's scope—they don't affect the namespace of the imported lstm module.
Here's how to fix it properly:
Step 1: Find where the lstm module lives
First, run this snippet in your Python shell to get the file path of the lstm module:
import lstm print(lstm.__file__)
This will output the full path to the .py file containing the LSTM code you're using.
Step 2: Update the module's code directly
Open that .py file in a text editor (like VS Code, Sublime, or even Notepad) and do a full search-and-replace:
- Replace every instance of
xrange(withrange( - Save the file once you're done.
Python 3's range works exactly like Python 2's xrange, so this change won't break any functionality—it just makes the module compatible with modern Python versions.
Alternative: Monkey-patch the module (if you can't edit the source)
If you don't have permission to modify the lstm module's code, add this right after you import the module in your script:
import lstm # Add xrange to the lstm module's namespace so its functions can find it lstm.xrange = range # Note: If the xrange is used in a sub-module (like lstm.utils), target that instead: # lstm.utils.xrange = range
This injects the xrange name into the lstm module's scope, so when its internal functions try to call xrange, it will use Python 3's range instead.
Why your original fixes didn't work
The code you tried:
import sys; if sys.version_info < (3,): range = xrange
or
try: xrange = xrange except NameError: xrange = range
only defines xrange in your script's own namespace. Each Python module has its own separate scope, so those definitions don't carry over to the lstm module. That's why the error persisted when the module's functions tried to use xrange.
内容的提问来源于stack exchange,提问作者Rafael Ordonez

